如何修复此链接列表输出?

Posted

技术标签:

【中文标题】如何修复此链接列表输出?【英文标题】: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 【参考方案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 如果我的回答帮助您解决了您的程序,那么您可以选择该答案作为最佳答案。在这种情况下,您的声誉将会提高。:)

以上是关于如何修复此链接列表输出?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 python 3.4 tkinter“索引错误:列表索引超出范围”中修复此错误

如何在 VS2019 的开发人员命令提示符中修复此链接器错误

如何修复 CS0136? [关闭]

如何修复此错误:偏移参数包含 NaN 值。 'dart:ui/painting.dart':断言失败:第 43 行:'<优化输出>'

如何修复警告:扩展初始化列表?

如何修复 AFK 通道的“空”输出