【问题标题】:How can I fix this linked list output?如何修复此链接列表输出?
【发布时间】:2021-12-13 21:44:36
【问题描述】:
    #include <stdio.h>
#include <stdlib.h>

struct node{

    int sayi;
    struct node* sonraki;



};

struct node* baslangic=NULL;


struct node* olustur(int sayi){

    struct node* yenidugum=(struct node*)malloc(sizeof(struct node));
    yenidugum->sayi=sayi;
    yenidugum->sonraki=NULL;

    return yenidugum;



}

void sonaekle(int sayi){

    struct node* sonaeklenecek=olustur(sayi);

    if(baslangic==NULL){

        baslangic=sonaekle;
    }
    else
    {

        struct node* temp=baslangic;

        while(temp->sonraki!=NULL){

            temp=temp->sonraki;
            temp->sonraki=sonaekle;
        }


    }

}

void yazdir(){


    struct node* temp=baslangic;

    while(temp!=NULL){


        printf("%d =>",temp->sayi);
        temp=temp->sonraki;
    }

}

int main()
{



    int secim, sayi;

    while(1){
        printf("1-Sona eleman ekle.....\n");
        printf("Yapmak istediginiz secimi yapin...\n");
        scanf("%d",&secim);


        switch(secim){

        case 1:
            printf("Hangi elemani ekleyeceksiniz..\n");
            scanf("%d",&sayi);
            sonaekle(sayi);
            yazdir();
            break;

        }

    }

    return 0;
}

我正在尝试制作链表,但是当我运行此代码时,它会给出如下输出:-443987883 =&gt;。我的错误是什么。我找不到它。感谢您的回答和时间。

【问题讨论】:

  • 我的主要语言是土耳其语,所以 secim 表示选择,sonaekle 表示结束
  • 链表有很多示例代码。我认为您应该尝试学习调试并创建minimal reproducible example

标签: c data-structures struct linked-list singly-linked-list


【解决方案1】:

有错别字。

代替

baslangic=sonaekle;

您将void ( * )( int ) 类型的函数指针分配给您需要编写的结构node * 类型的指针

baslangic=sonaeklenecek;

而不是这个while循环

    while(temp->sonraki!=NULL){

        temp=temp->sonraki;
        temp->sonraki=sonaekle;
    }

你需要写

    while(temp->sonraki!=NULL){

        temp=temp->sonraki;
    }

    temp->sonraki = sonaeklenecek;

【讨论】:

  • 感谢您的回答,我的朋友,但 sonaekle 是一个函数,但 sonaeklenecek 是一个结构。这是怎么发生的?
  • @Azqaf 编译器应该发出一条消息,指出使用了不兼容的指针类型。
  • 它没有给出任何错误。 @VladfromMoscow
  • @Azqaf 这很奇怪,因为类型 struct node * 和您在代码中使用的函数指针类型 void ( * )(inti) 不是兼容的指针类型。至少编译器应该发出警告。
  • @Azqaf 如果我的回答帮助您解决了您的程序,那么您可以选择该答案作为最佳答案。在这种情况下,您的声誉将会提高。:)
猜你喜欢
  • 1970-01-01
  • 2017-09-15
  • 1970-01-01
  • 1970-01-01
  • 2021-10-09
  • 1970-01-01
  • 1970-01-01
  • 2022-01-11
  • 1970-01-01
相关资源
最近更新 更多