在 C 语言中创建单个链接列表


#include<stdio.h>
#include<stdlib.h>
struct list
{
int a;
int b;
int c;
struct list *next;
};
struct list* addlistele(struct list*,int,int,int);
/* List c element */
void listc()
{
printf(" soon...n");
}
void printlist(list)
{
struct list* temp;
temp=list;
while(temp!=NULL)
{
printf("a:%d,b;%d,c:%dn",temp->a,temp->b,temp->c);
temp=temp->next;
}
}
/* List element  */
struct list* addlistele(struct list* listadd,int b,int d,int m)
{
int i;
struct list* temp;
struct list* addelement=(struct list*)malloc(sizeof(struct list));
addelement->a=b;
addelement->b=d;
addelement->c=m;
addelement->next=NULL;
if(listadd==NULL)
 {
 printf("entering");
 return addelement;
 }
else
{
temp=listadd;
while(temp->next!=NULL)
{
temp=temp->next;
}
temp->next=addelement;
} 
return listadd;
}
int main()
{
int ch,i,a,b,c;
struct list *element,*list;
element=(struct list*)malloc(sizeof(struct list));
printf("Choose any one of the option n");
printf("1.List All n 2.List c n");
scanf("%d",&ch);
switch(ch)
{
case 1:printf("Enter values n");
   for(i=0;i<2;i++)
   {
   scanf("%d %d %d n",&a,&b,&c);
   list=addlistele(element,a,b,c);
   }
   printlist(list);
   break;
  case 2:listc(); break;
  default:break;
  }
  }

大家好,我已经编写了像上面的代码。当我提供意见时

> Choose any one of the option 
> 1.List All 
>  2.List c  1 Enter values  2 3 4 1 2 3
The output is
a:0,b;0,c:0
a:2,b;3,c:4
a:1,b;2,c:3

而且它没有先添加元素,我的意思是它没有进入这个循环

if(listadd==NULL)
     {
     printf("entering");
     return addelement;
     }

如何使头部元素为 NULL,我也不知道 0 是如何先出现的。谁能告诉我会有什么问题?

main()中创建 head 元素并将其传递给 addlistele() 函数。

element=(struct list*)malloc(sizeof(struct list));
...
list=addlistele(element,a,b,c);

您看到的第一个元素没有预期的有效值。

解决方案是您将元素malloc()在函数中而不是main()中,并且不要在main()中分配element

替换

struct list *element,*list;
element=(struct list*)malloc(sizeof(struct list));

struct list *list=NULL;

然后

取代

list=addlistele(element,a,b,c);

list=addlistele(list,a,b,c);

取代

void printlist(list)

void printlist(struct list *list)

scanf("%d %d %d n",&a,&b,&c);替换为scanf("%d %d %d",&a,&b,&c);

相关内容

  • 没有找到相关文章

最新更新