介绍
定义一个函数,从尾节点开始打印输出链表。
分析
可以用递归的方式,到尾节点了在开始打印输出数据。也可以生成一个新的链表从头节点插入,然后输出。也可以用栈来保存遍历的链表节点,然后弹栈输出。
代码
#include<stdio.h>
#include<iostream>
#include<stdlib.h>
using namespace std;
typedef struct ListNode
{
int value;
ListNode* next;
}ListNode;
void PrintList(ListNode* pHead)
{
ListNode* pNode=pHead;
if(pNode==NULL)
return;
PrintList(pNode->next);
cout<<pNode->value<<endl;
return;
}
int main()
{
ListNode* m_list=(ListNode*)malloc(sizeof(ListNode));
m_list->value=10;
m_list->next=NULL;
ListNode* k=m_list;
for(int i=10;i<15;i++)
{
ListNode* item=(ListNode*)malloc(sizeof(ListNode));
item->value=i*2;
item->next=NULL;
k->next=item;
k=item;
}
k=m_list;
while(k!=NULL)
{
cout<<k->value<<" ";
k=k->next;
}
cout<<endl;
PrintList(m_list);
system("pause");
return 0;
}
遇到的问题
算是典型的时间换空间吧。