注册 登录
编程论坛 新人交流区

[求助] 创建链表错误 麻烦给我看看

matychen 发布于 2007-10-10 12:48, 454 次点击
源程序如下::

#include "stdlib.h"
#include "stdio.h"
struct list
{ int data;
struct list *next;
};
typedef struct list node;
typedef node *link;
void main()
{ link ptr,head;
int num,i;
ptr=(link)malloc(sizeof(node));
head=ptr;
printf("please input 5 numbers==>\n");
for(i=0;i<=4;i++)
{
 scanf("%d",&num);
 ptr->data=num;
 ptr->next=(link)malloc(sizeof(node));
 if(i==4) ptr->next=NULL;
 else ptr=ptr->next;
}
ptr=head;
while(ptr!=NULL)
{ printf("The value is ==>%d\n",ptr->data);
 ptr=ptr->next;
}
}

不知道哪里错了 请高手帮帮忙
5 回复
#2
hdl12007-10-10 14:15
好久没有看书了
帮不了你了
数据结构那种书里面有
#3
longfeng8672007-10-10 14:56
帮你整出来了 ,学习学习吧
//运行环境VC
#include <stdlib.h>
#include <stdio.h>
#include<malloc.h>
#define len sizeof(struct node)
struct node
{
int data;
struct node *next;
};
int n;
void main()
{
struct node *head;
struct node *p,*ptr,*ptr1;
n=0;
printf("请输入初始数据,以0结束数据输入==>\n");
ptr=ptr1=(struct node *)malloc(len);//开辟结点,同时指向头结点
scanf("%d",&ptr->data);
head=NULL;//置为空链表
while(ptr->data!=0)//当输入0的时候,数据录入结束,0不在数据范围内
{
n=n+1;
if(n==1)//第一个结点数据赋值给链表头head
head=ptr;
else //如果不为第一个结点的时候执行ptr1->next=ptr,即将第一个结点的next成员指向第二个结点
ptr1->next=ptr;
ptr1=ptr;//使ptr1指向刚刚建立的结点
ptr=( struct node *)malloc(len);//反复执行
scanf("%d",&ptr->data);
}
ptr1->next=NULL;//将其next置为空,不指向任何结点
p=head;//指针P指向链表的头
if(head!=NULL)//如果链表不为空就开始打印输出
{
printf("链表中的数据为:");
do
{
printf("%d ",p->data);
p=p->next;
}while(p!=NULL);
printf("\n\t\t\t");
}
else
printf("\n\n空链表,请初始化数据!!!\n\t\t\t");
}
#4
sunyin2007-10-10 14:57
新手,没法帮你了
#5
matychen2007-10-10 16:55
谢谢longfeng867 了

用你的程序解决了 呵呵
#6
alai20072007-10-11 14:28

学习

1