您的位置:首页 > 其它

从尾到头打印链表

2015-08-18 16:16 225 查看
1.第一种方法:

我们可以利用stack先进后出的特性来进行中转。

stack<Node*> s;

Node*p=head->next;

while(p)

{

s.push(p);

p=p->next;

}

while(!s.empty())

{

printf("%d",s.top()->data);

s.pop();

}

这样很容易就能让链表倒序输出。

2.第二种方法:

我们也可以用递归函数来倒换

void printListrever(Node *pHead)

{

if(pHead==NULL)

{

return;

}

printListrever(pHead->next);

printf("%d",pHead->data);

}

这样也能让链表倒序输出,只是鲁棒性差(不能有太深层的递归)。

3.第三种方法

我们可以对链表进行反转后顺序输出。

void reserv(Node * pHead)

{

Node*pPre=pHead;

if(pHead->next==NULL)

{

return;

}

Node*pCur=pPre->next;

if(pCur->next==NULL)

{

return;

}

Node*pPost=pCur->next;

while(pPost)

{

pCur->next=pPre;

if(pPre==pHead)

{

pCur->next=NULL;

}

pPre=pCur;

pCur=pPost;

pPost=pPost->next;

}

pCur->next=pPre;

pHead->next=pCur;

}

输出后还须给转过回来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: