您的位置:首页 > 其它

逆序输出链表

2014-06-09 16:29 337 查看
输入一个链表的头结点,从尾到头反过来输出每个结点的值。链表结点定义如下:

struct ListNode
{
int       m_nKey;
ListNode* m_pNext;
};




有疑问。。。。关于函数的参数传递

#include <iostream>

using namespace std;

struct ListNode { int m_nKey; ListNode* m_pNext; };
//两个函数声明会产生完全不同的结果...
//找大神解释...
//void ReverList(ListNode * head)
void ReverList(ListNode * &head)
{
if(head == NULL || head -> m_pNext == NULL)
return;
ListNode * f = head -> m_pNext;
ListNode * b = head;
while(f)
{
ListNode * tmp = f->m_pNext;
f->m_pNext = b;
b = f;
f = tmp;
}
head -> m_pNext = NULL;
head = b;
}

void printList(ListNode *head)
{
if(head == NULL)
return;
ListNode * cur = head;
while(cur)
{
cout<<cur->m_nKey<<" ";
cur = cur->m_pNext;
}
cout<<endl;
}

int main()
{
ListNode *head = new ListNode;
head ->m_nKey = 1;
head -> m_pNext = NULL;
ListNode * cur = head;
for(int i = 2;i<5;i++)
{
ListNode *tmp = new ListNode;
tmp -> m_nKey = i;
tmp ->m_pNext = NULL;
cur->m_pNext = tmp;
cur = cur->m_pNext;
}

cout<<"init"<<endl;
printList(head);
ReverList(head);
cout<<"after Reverse"<<endl;
printList(head);
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: