注册 登录
编程论坛 数据结构与算法

关于数据结构单链表的一些问题(建立一个带头结点的元素值递增有序的单链表)

来学C语言啊 发布于 2011-09-17 19:32, 3742 次点击
啊啊啊啊啊啊啊!!!!!!!书上就那么几页,我翻来覆去的看了几篇,还是没搞明白,晕啊
题目是:建立一个带头结点的元素值递增有序的单链表。
P和q到底代表什么,有点晕啊。求高人详解啊,最好能画个简单的示意图.............
typedef struct node{
char data;
strcut node *next;
}LINKLIST;
LINKLIST *creat(LINKLIST *head)
{
LINKLIST *t,*p,*q;
char ch;
t=(LINKLIST*)malloc(sizeof(LINKLIST));
head=t;t->next=NULL;
while((ch=getchar())!=‘$')
{
t=(LINKLIST*)malloc(sizeof(LINKLIST));
t->data=ch;q=head;p=head->next;
while(p!=NULL&&p->data<=ch)
{q=p;p=p->next;}
q->next=t;t->next=p;
}
return (head);
}
只有本站会员才能查看附件,请 登录


[ 本帖最后由 来学C语言啊 于 2011-9-17 21:23 编辑 ]
5 回复
#2
来学C语言啊2011-09-17 19:42
LINKLIST *creat(LINKLIST *head)
{
LINKLIST *t,*p,*q;
char ch;
t=(LINKLIST*)malloc(sizeof(LINKLIST)); //建立表头结点
head=t;t->next=NULL;                      //head→【头结点】【NULL】
while((ch=getchar())!=‘$')
{
t=(LINKLIST*)malloc(sizeof(LINKLIST)); // 【t】【】
t->data=ch;q=head;p=head->next;  //【ch】【】这个q=head怎么理解啊?难道变成了q→【头结点】【NULL】
while(p!=NULL&&p->data<=ch)
{q=p;p=p->next;}
q->next=t;t->next=p;
}
return (head);
#3
来学C语言啊2011-09-17 19:48
#4
来学C语言啊2011-09-17 21:23
我画了个图啊,求好心人帮忙解惑啊!!
#5
寒风中的细雨2011-09-17 21:54
头结点
头指针


结点前插
结点后插(尾部)

q 的功能就是标记 保证每次从头结点开始, 找到接受的数据要安置(插入)的位置,反过来想想 没有q会是怎样的场景,也许这样会更加容易理解吧
#6
来学C语言啊2011-09-17 23:26
回复 5楼 寒风中的细雨
根据你的提示加上百度的一个好心人的问答,我终于明白了,可是困惑了一晚上啊!
只有本站会员才能查看附件,请 登录

随便画了一个示意图,要是有和我一样的困惑的可以看看。
感谢国家!感谢版主!感谢好心人!
可以安心睡觉了
1