打印链表时,我们不希望修改链表的结构,并且希望从尾到头打印其中的内容,这时很容易想到栈的结构。因为指针从头到尾依次遍历,把内容读到栈里,先进的内容会后出,符合从尾到头打印的顺序,而且没有改变栈的结构。实现如下,先随机生成一个有10个结点的链表,正向打印,最后调用PrintListReversingly_Iteratively()函数,反向打印。
#include <iostream>
#include <stdlib.h>
#include <stack>
#include <time.h>
#include <assert.h>
using namespace std;
typedef struct linkList
{
int m_nValue;
struct linkList *next;
}listNode,*linklistp;
linklistp insert_tail(linklistp head,linklistp newnode)
{
assert(newnode);
if(head == NULL)
{
head = newnode;
}
else
{
linklistp temp = head;
while(temp->next != NULL)
{
temp = temp->next;
}
newnode->next = NULL;
temp->next = newnode;
}
return head;
}
void output(linklistp head)
{
linklistp temp = head;