哪位高手能帮小弟我解释一下这啥意思啊例如q=p->next,L->next=p,p->next=L->next,p=q
谁能帮我解释一下这啥意思啊例如q=p->next,L->next=p,p->next=L->next,p=q
我是初学数据结构 老师讲时候能听明白是那么回事 就是说知道是如何实现那么个思想 但是实际自己再看的时候就很迷糊了 现在此时我举例说一下
单链表逆置 如下:
p=L-> next-> next;
q=p-> next;
L-> next-> next=NULL;
while(p!=null)
{
p-> next=L-> next;
L-> next=p;
p=q;
q=q-> next;
现在我知道是要形成这样的效果 比如开始链表是这样:1-> 2-> 3-> 4
逆置完事应该是1 <-2 <-3 <-4 是这样吧.
例如
p=L-> next-> next;这句意思是把头节点的后继的后继指向p是吗 比如上面的例子来说就是1是头节点的话 那么这句话就是把1的后继也就是2的后继指向p对吗
q=p-> next;这句的意思就p的后继指向q
L-> next-> next=NULL;这句是把1的后继的后继置空
while(p!=null)如果p不为空
{
p-> next=L-> next;这句是把1的后继指向p的后继 (这句啥意思啊)
L-> next=p;这句呢把p付给l的后继是吗
p=q;这句把q给p
q=q-> next;
q=p-> next 这句是把p的后继指针指向q
我的妈呀 蒙了啊 谁帮我分析一下啊 调理一下思路啊 怎么乱其八糟的啊
谢谢各位啦
单链表逆置方法二:线性表由q来
表示
p=null;
w=q;
while(w!=null)
{
w=w-> next;w的后继指向w
q-> next=p;(。。。。。我要疯了 谁帮我继续解释一下啊 求求你们了)
p=q;
q=w;
}
最好是把你们看到这些个语句是怎么理解的 在心里是怎么用汉语读出这些个语句的高速我一下 谢谢啦
------解决方案--------------------
我也是菜鸟一只,初学数据结构,刚好楼主所说问题看过,斗胆一试.这也是我首次在****发帖。不妥之处,还请见谅。我将楼主的程序放入VC中调试 发现根本不能实现逆序。不知楼主试了没有。
p=L-> next; /*指向第一个待逆序的结点 也就是所说的1的后继*/
L-> next=NULL;/*将逆表的初值设为空表*/
while(p!=NULL) /*原表中还有未逆序的结点*/
{
q=p; /*q是当前的逆序的结点*/
p=p-> next;/*指向下一个待逆序的结点*/
p-> next=L-> next;
L-> next=q; /*这两句是将q插入到逆序表的头上*/
}
不知对不对,还请各位高手 海批!!
------解决方案--------------------
用堆栈来实现吧
------解决方案--------------------
L是头结点
head-> 1-> 2-> 3-> 4
head就是L所在的位置
p=L-> next-> next; //指向1.next;
q=p-> next; //指向2.next
L-> next-> next=NULL; //将1.next设为null
while(p!=null)
{
p-> next=L-> next; // 两个结点倒置
L-> next=p; //现在头结点为p
p=q; //记录当前的p指针
q=q-> next; //向后递归进行处理
我是初学数据结构 老师讲时候能听明白是那么回事 就是说知道是如何实现那么个思想 但是实际自己再看的时候就很迷糊了 现在此时我举例说一下
单链表逆置 如下:
p=L-> next-> next;
q=p-> next;
L-> next-> next=NULL;
while(p!=null)
{
p-> next=L-> next;
L-> next=p;
p=q;
q=q-> next;
现在我知道是要形成这样的效果 比如开始链表是这样:1-> 2-> 3-> 4
逆置完事应该是1 <-2 <-3 <-4 是这样吧.
例如
p=L-> next-> next;这句意思是把头节点的后继的后继指向p是吗 比如上面的例子来说就是1是头节点的话 那么这句话就是把1的后继也就是2的后继指向p对吗
q=p-> next;这句的意思就p的后继指向q
L-> next-> next=NULL;这句是把1的后继的后继置空
while(p!=null)如果p不为空
{
p-> next=L-> next;这句是把1的后继指向p的后继 (这句啥意思啊)
L-> next=p;这句呢把p付给l的后继是吗
p=q;这句把q给p
q=q-> next;
q=p-> next 这句是把p的后继指针指向q
我的妈呀 蒙了啊 谁帮我分析一下啊 调理一下思路啊 怎么乱其八糟的啊
谢谢各位啦
单链表逆置方法二:线性表由q来
表示
p=null;
w=q;
while(w!=null)
{
w=w-> next;w的后继指向w
q-> next=p;(。。。。。我要疯了 谁帮我继续解释一下啊 求求你们了)
p=q;
q=w;
}
最好是把你们看到这些个语句是怎么理解的 在心里是怎么用汉语读出这些个语句的高速我一下 谢谢啦
------解决方案--------------------
我也是菜鸟一只,初学数据结构,刚好楼主所说问题看过,斗胆一试.这也是我首次在****发帖。不妥之处,还请见谅。我将楼主的程序放入VC中调试 发现根本不能实现逆序。不知楼主试了没有。
p=L-> next; /*指向第一个待逆序的结点 也就是所说的1的后继*/
L-> next=NULL;/*将逆表的初值设为空表*/
while(p!=NULL) /*原表中还有未逆序的结点*/
{
q=p; /*q是当前的逆序的结点*/
p=p-> next;/*指向下一个待逆序的结点*/
p-> next=L-> next;
L-> next=q; /*这两句是将q插入到逆序表的头上*/
}
不知对不对,还请各位高手 海批!!
------解决方案--------------------
用堆栈来实现吧
------解决方案--------------------
L是头结点
head-> 1-> 2-> 3-> 4
head就是L所在的位置
p=L-> next-> next; //指向1.next;
q=p-> next; //指向2.next
L-> next-> next=NULL; //将1.next设为null
while(p!=null)
{
p-> next=L-> next; // 两个结点倒置
L-> next=p; //现在头结点为p
p=q; //记录当前的p指针
q=q-> next; //向后递归进行处理