如何修复此链接列表输出?
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 =>
。我的错误是什么。我找不到它。感谢您的回答和时间。
【问题讨论】:
我的主要语言是土耳其语,所以 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 的开发人员命令提示符中修复此链接器错误
如何修复此错误:偏移参数包含 NaN 值。 'dart:ui/painting.dart':断言失败:第 43 行:'<优化输出>'