首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

数据结构没有啃完,见到一些题,请高手帮忙!解决办法

2012-03-09 
数据结构没有啃完,见到一些题,请高手帮忙!(1)已知链表的头结点head,写一个函数把这个链表逆序(Intel)Node*

数据结构没有啃完,见到一些题,请高手帮忙!
(1)已知链表的头结点head,写一个函数把这个链表逆序   (   Intel)
Node   *   ReverseList(Node   *head)   //链表逆序
{
if   (   head   ==   NULL   ||   head-> next   ==   NULL   )
return   head;
Node   *p1   =   head   ;//这个p1与head指向同一结点?
Node   *p2   =   p1-> next   ;//p1-> next指向p2?
Node   *p3   =   p2-> next   ;//p2-> next指向p3?
p1-> next   =   NULL   ;//p1-> next为空
while   (   p3   !=   NULL   )
{
p2-> next   =   p1   ;//不理解
p1   =   p2   ;//不理解
p2   =   p3   ;//不理解
p3   =   p3-> next   ;//不理解
}
p2-> next   =   p1   ;//不理解
head   =   p2   ;//不理解
return   head   ;//不理解

谢谢     帮忙说下“?”部门和不理解部门       其实就是我都不理解。。。刚看了一遍C++   primer     数据结构没看完     希望大家不要PS

[解决办法]
都是指针,
在去复习复习指针的东西吧,不然你看数据结构肯定不行
[解决办法]
这没什么好回复的了
[解决办法]
Node * ReverseList(Node *head) //链表逆序
{

//空表判断
if ( head == NULL || head-> next == NULL )
return head;

Node *p1 = head ;//这个p1与head指向同一结点? 是的。
Node *p2 = p1-> next ;//p1-> next指向p2?准确讲,p2和 p1-> next指向了同一个节点
Node *p3 = p2-> next ;//p2-> next指向p3?准确讲,p3和 p2-> next指向了同一个节点

p1-> next = NULL ;//p1-> next为空 表示将第一个节点作为新链的尾节点

while ( p3 != NULL )
{
p2-> next = p1 ;//把p2的next指针,指向他原来的前节点,实现翻转
p1 = p2 ;//已经翻转过一个节点,p1就是新链的头指针
p2 = p3 ;//p2指向新的要翻转的节点
p3 = p3-> next ;//p3指向下一次要翻转的节点
}
p2-> next = p1 ;//此时,p2指的是原链表中的最后一个节点
head = p2 ;//有问题,函数可以直接return p2,函数结束后,入参变量head不会变化,没必要在这里赋值
return head ;

[解决办法]
这有甚么好说的呢?
回去好好看书吧
[解决办法]
Node *p1 = head ;//这个p1与head指向同一结点? 是的。
Node *p2 = p1-> next ;//p1-> next指向p2?准确讲,p2和 p1-> next指向了同一个节点
Node *p3 = p2-> next ;//p2-> next指向p3?准确讲,p3和 p2-> next指向了同一个节点

p1-> {p1-> next} p2-> {p2-> next} p3-> {p3-> next}
| |_________| |_________| |___......
|
head
***********************

p1-> next = NULL ;//p1-> next为空 表示将第一个节点作为新链的尾节点

p1{p1-> next}
| |___null
|
head
表示将第一个节点作为新链的尾节点
*******************************
然后在p3 不为空 (即链表没结束)的情况反复操作
{
p2-> next = p1 ;//把p2的next指针,指向他原来的前节点,实现翻转
p1 = p2 ;//已经翻转过一个节点,p1就是新链的头指针
p2 = p3 ;//p2指向新的要翻转的节点
p3 = p3-> next ;//p3指向下一次要翻转的节点
}


最后P3为空 P2为头节点
p3-> null
p2-> {p2-> next} p1-> {p1-> next} p1-> {p1-> next}
| |_________| |___________| |___......
|
head


新人个人理解
欢迎大家指教

热点排行