鱼C论坛

 找回密码
 立即注册
查看: 2410|回复: 3

关于链表的代码,编译通过,运行就错误……

[复制链接]
发表于 2011-10-27 00:27:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我是完全照书上打的,编译没问题,运行就出错,不懂哪出了问题,求帮忙~~

#include <stdio.h>
#include <stdlib.h>
#define Max 10
struct list
{
int Number;
int Total;
struct list *next;
};
typedef struct list node;
typedef node *link;
int Data[2][Max]={1,3,5,7,2,4,6,8,9,0,15,35,10,67,25,65,38,70,30,20};
link insert_list(link head,link New,int key)
{
link pointer;
pointer = head;
while(1)
{
  if(pointer == NULL)
  {
   New->next =head;
   head = New;
   break;
  }
  if(pointer->Number == key)
  {
   New->next = pointer->next;
   pointer->next = New;
   break;
  }
  pointer = pointer->next;
}
return head;
}
void print_list(link head)
{
link pointer;
pointer = head;
while(pointer != NULL)
{
  printf("[%d,%d,]",pointer->Number,pointer->Total);
  pointer = pointer->next;
}
printf("\n");
}
void free_list(link head)
{
link pointer;
while(head != NULL)
{
  pointer = head;
  head = head->next;
  free(pointer);
}
}

link create_list(link head)
{
link New;
link pointer;
int i;
head = (link)malloc(sizeof(node));
if(head = NULL)
  printf("failure");
else
{
  head->Number = Data[0][0];
  head->Total = Data[1][0];
  head->next = NULL;
  pointer = head;
}

for(i=1;i<=Max;i++)
{
  New = (link)malloc(sizeof(node));
  New->Number = Data[0][i];
  New->Total = Data[1][i];
  New->next = NULL;
  pointer->next = New;
  pointer = New;
}
return head;
}

int main()
{
link head;
link New;
int key;
head = create_list(head);
if(head!=NULL)
{
  print_list(head);
  while(1)
  {
   printf("Input 0 to EXIT\n");
   New = (link)malloc(sizeof(node));
   printf("Input the data number:");
   scanf("%d",&New->Number);
   if(New->Number == 0)
    break;
   printf("input the data number for insert:");
   scanf("%d",&key);
   head = insert_list(head,New,key);
   print_list(head);
  }
  free_list(head);
}
return 0;
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-28 09:03:28 | 显示全部楼层
if(head == NULL)  //是(等号==),不是赋值号(=)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-28 09:04:19 | 显示全部楼层
if(head == NULL)  //是(等号==),不是赋值号(=);

for(i=1;i<Max;i++)     //是i<Max(10), 如果i<=Max(10)数组越界,

看起来很糟啊.....:@
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-28 09:17:21 | 显示全部楼层
还有BUG,,自己改吧,,如开辟了两个整型内存空间 却只接收一个输入....
循环可以找退出条件,而不要用关键字来跳出循环(除非没办法才用跳的)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 19:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表