帮忙看看 怎么才能输出链表
//创建一个链表并输出#include<stdio.h>
#include<malloc.h>
struct Node * CreatList( int);//声明创建链表的函数
struct Node{
int data;
struct Node *next;
}; //定义结构体-节点
int main()
{
int n;
int t;
struct Node * p,*q;
printf("输入要创建的链表长度n:");
scanf("%d",&n);
p=CreatList(n); //创建n+1个节点的链表
q=p;
printf("输入n个数据到链表:");
for(p;p->next->next!=NULL;p++){
scanf("%d",&t);
p->next->data=t;
} //读入n个数到链表
for(q;q->next->next!=NULL;q++){
printf("%d",q->next->data);
}
return 0;
}
struct Node * CreatList(int n)
{
struct Node A; //链表头结点
struct Node *p,*q,*T;
int i;
p=q=&A;
for(i=0;i<n;i++){
T=(struct Node *)malloc(sizeof(struct Node)); //每次在链表中添加的新节点
p->next=T;
p=p->next;
p->next=NULL;
}
return q;
} //创建链表函数原型 没有人帮忙看看吗:sad 可以参考一下:http://bbs.fishc.com/forum.php?mod=viewthread&tid=45460&ctid=184 问题很多啊 不知从何讲起 //创建一个链表并输出
#include<stdio.h>
#include<malloc.h>
typedef struct Node{
int data;
struct Node *next;
}Node, *LinkList; //定义结构体-节点
void CreatList(int n, LinkList L)
{
Node *p,*T;
int i;
p=L;
for(i=0;i<n;i++){
T=(struct Node *)malloc(sizeof(struct Node)); //每次在链表中添加的新节点
p->next=T;
p=p->next;
p->next=NULL;
}
} //创建链表函数原型
int main()
{
int n;
int t;
Node *p, *q;
LinkListL;
L = (LinkList)malloc(sizeof(Node));
printf("输入要创建的链表长度n:");
scanf("%d",&n);
CreatList(n, L); //创建n+1个节点的链表
p = q = L;
printf("输入n个数据到链表:");
for(p; p->next!=NULL; p = p->next){
scanf("%d",&t);
p->next->data=t;
} //读入n个数到链表
for(q; q->next!=NULL; q = q->next){
printf("%d",q->next->data);
}
return 0;
}
这是我改好的程序 下面说说你犯的错误
首先:
头节点的设立不能在函数体中,否则函数执行完毕后就会自动删除头节点,所以就无法return头节点地址,所以要在main函数中预先设立头指针,然后将头指针传入create函数。
其次:
main函数中的数据输入循环和数据打印循环中,自增语句(for语句的最后一个)你写“p++,q++”有什么意义?这是指针,不是整形!!所以正确的写法是p = p->next, q = q->next
最后说一点我自己的习惯:
写程序最好写在开头,我不习惯写在后面然后在前面声明函数 打这么多,给我评分,赞啊啊啊!!!!!!!!!!!!!!
页:
[1]