问一个关于指针和结构体,链表的问题
typedef int ElemType;
typedef struct LNode /*定义结点结构体类型*/
{
ElemType data;/*数据域*/
struct LNode *next; /*指针域*/
} LNode;
然后有一个逆置的函数:
LNode *reverlist(LNode *head) /*逆置链式基本线性表*/
{
LNode *p,*q,*r;
p=head;
q=p->next;
while(q!=NULL)
{
r=q->next;
q->next=p;
p=q;
q=r;
}
head->next=NULL;
head=p;
return(head);
}
我想问的是这个逆置函数中的红色部分语句的含义。是什么。
既然下面要将head赋值为p那么上一句在对head的成员做修改还有什么意义。但是我试过去掉这一行。却又出现死循环
[解决办法]
之前你的Head->next指向的是逆置之前的第二个节点,逆置之后Head变成了尾节点,这时你就需要将尾节点的next指向null,要不然程序会在最后两个节点那死循环
[解决办法]
我说楼主的 p q 指针操作 写的有问题 ....
p -> head ;
却没有对p 有后续操作, 接着就进循环了 先是把 p 赋值给q -> next. 接着又是 把 q 给p 死循环了吧 好像....
[解决办法]