c语言一个问题,在线等

for(i=0;i<n;i++){
scanf("%d",&e);
p=(LinkList)malloc(sizeof(LNode));//生成新结点
//请补全代码
p->data=e;
p->next=q->next;
q->next=p;
q=q->next;
}

链表这里的:
p->data=e;
p->next=q->next;
q->next=p;
q=q->next;
不知道在next来next去到底是谁是谁,什么意思。。
谁能给我分析下这个过程?
结构体是这样的
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;

第1个回答  推荐于2016-07-22
q=head; //这里应该有这句

for(i=0;i<n;i++){
scanf("%d",&e);
p=(LinkList)malloc(sizeof(LNode));//生成新结点
//请补全代码
p->data=e;
/***
p->next=q->next; //这是带头结点的表,先将新结点的后继指向当前尾结点(q)的下一个,其实就是NULL
q->next=p; //然后,把当前结点链到表中
q=q->next; //p成为新尾结点
***/
以下三句,同上面的写法一样的效果
p->next=NULL; //结束标志
q->next=p; //追加到表尾
q=p; //p成为新尾结点
}追问

q=q->next; //p成为新尾结点
这一句不理解T T

追答

q->next=p; //q->next的值是p
q=q->next; //此句,可换成q=p ; //p是新结点,q=p不是将新结点p给了q吗,不就是将p变成了q成了新的尾结点了吗? 你看我新写的那三句,不就清楚了? 不知道谁给你写的这么复杂的语句!故意迷惑人!

本回答被提问者采纳
第2个回答  2015-04-12
p->data=e;把p这个节点的值给e,
p->next=q->next;p的下一个指向q的下一个
q->next=p;q的下一个又是p
q=q->next;q得下下一个是q
也就是p指向q,q有指向p,构成循环
第3个回答  2015-04-12
结点由数据域与指针域组成,可以画图帮助理解

---------------- ----------------
| data | point | ---> | data | point |
---------------- ----------------
结点p 结点p->next
第4个回答  2015-04-12
你的q代表什么啊
相似回答