c语言单链表问题
1单链表的建立#include<stdio.h>#include<stdlib.h>structplist{inti;structplist*next;};structp...
1 单链表的建立
#include <stdio.h>
#include <stdlib.h>
struct plist
{
int i;
struct plist *next;
};
struct plist *creat(){
struct plist *head,*end,*temp;
int num;
printf("请输入数字");
scanf("%d",&num);
head=(struct plist *)malloc(sizeof(struct plist));
end=head;!!!!!!!!!!!!明明没有对head进行操作,怎么返回的head还能指向end开始的单链表呢?后面函数返回的是head,想不通哎。难道说这里的head和end的地址一样?那不矛盾了赛,end=head到底什么意思?以上问题求解。。。
while(num){
temp=(struct plist *)malloc(sizeof(struct plist));
temp->i=num;
temp->next=NULL;
end->next=temp;
end=end->next;
printf("请输入数字");
scanf("%d",&num);
}
return head;
} int main()
{
struct plist *pp,*p;//(定义访问单链表的指针)
pp=creat();//(调用创建单链表的函数,使pp为函数的返回值 即单链表表头)
p=pp->next;
while(p)//(显示单链表的内容)
{
printf("%d",p->i);
p=p->next;
}
return 0;
} 展开
#include <stdio.h>
#include <stdlib.h>
struct plist
{
int i;
struct plist *next;
};
struct plist *creat(){
struct plist *head,*end,*temp;
int num;
printf("请输入数字");
scanf("%d",&num);
head=(struct plist *)malloc(sizeof(struct plist));
end=head;!!!!!!!!!!!!明明没有对head进行操作,怎么返回的head还能指向end开始的单链表呢?后面函数返回的是head,想不通哎。难道说这里的head和end的地址一样?那不矛盾了赛,end=head到底什么意思?以上问题求解。。。
while(num){
temp=(struct plist *)malloc(sizeof(struct plist));
temp->i=num;
temp->next=NULL;
end->next=temp;
end=end->next;
printf("请输入数字");
scanf("%d",&num);
}
return head;
} int main()
{
struct plist *pp,*p;//(定义访问单链表的指针)
pp=creat();//(调用创建单链表的函数,使pp为函数的返回值 即单链表表头)
p=pp->next;
while(p)//(显示单链表的内容)
{
printf("%d",p->i);
p=p->next;
}
return 0;
} 展开
2013-12-28
展开全部
#include <stdio.h>
#include <stdlib.h>
struct plist
{
int i;
struct plist *next;
};
struct plist *creat(){
struct plist *head,*end,*temp;
int num;
printf("请输入数字 ");
scanf("%d",&num);
head=(struct plist *)malloc(sizeof(struct plist)); //*******************************************
end=head; //意思是 end指针指向head 头结点,然后,用end指针向后移动,给head链表增加节点
while(num){
temp=(struct plist *)malloc(sizeof(struct plist));
temp->i=num;
temp->next=NULL;
end->next=temp;
end=end->next;
printf("请输入数字 ");
scanf("%d",&num);
}
return head; //*****************************************************
//执行完后返回头指针 ,end 没有用了
}
int main()
{
struct plist *pp,*p;//(定义访问单链表的指针)
pp=creat();//(调用创建单链表的函数,使pp为函数的返回值 即单链表表头)
p=pp->next;
while(p)//(显示单链表的内容)
{
printf("%d",p->i);
p=p->next;
}
return 0;
}
#include <stdlib.h>
struct plist
{
int i;
struct plist *next;
};
struct plist *creat(){
struct plist *head,*end,*temp;
int num;
printf("请输入数字 ");
scanf("%d",&num);
head=(struct plist *)malloc(sizeof(struct plist)); //*******************************************
end=head; //意思是 end指针指向head 头结点,然后,用end指针向后移动,给head链表增加节点
while(num){
temp=(struct plist *)malloc(sizeof(struct plist));
temp->i=num;
temp->next=NULL;
end->next=temp;
end=end->next;
printf("请输入数字 ");
scanf("%d",&num);
}
return head; //*****************************************************
//执行完后返回头指针 ,end 没有用了
}
int main()
{
struct plist *pp,*p;//(定义访问单链表的指针)
pp=creat();//(调用创建单链表的函数,使pp为函数的返回值 即单链表表头)
p=pp->next;
while(p)//(显示单链表的内容)
{
printf("%d",p->i);
p=p->next;
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-12-28
展开全部
变量end和head都是结构体指针变量,所存储的是地址,end=head,就是把head的地址传递给end,此时end指向的存储空间和head指向的是一样的,所以对end操作也就是对head指向的存储空间操作,这里没有变量end而直接用head也是可以的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-12-28
展开全部
楼上的回答很优秀,结构体指针变量存取的就是地址,但是这里不能直接对head进行操作,因为以后要返回,所以借用end来操作,而head保存头结点地址,以便访问函数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询