剑指offer例题5—逆序输出链表
使用递归:
#include<iostream>
using namespace std;
struct ListNode
{
int value;
ListNode *next;
};
void Print(ListNode *list)
{
if(list!=NULL)
{
if(list->next!=NULL)
Print(list->next);
cout<<list->value<<endl;
}
}
int main()
{
int n;
while(cin>>n)
{
ListNode *head=(ListNode*)malloc(sizeof(ListNode*));
ListNode *list=head;
while(n--)
{
int m;cin>>m;
ListNode *newNode=(ListNode*)malloc(sizeof(ListNode*));
newNode->value=m;
list->next=newNode;
list=list->next;
}
list->next=NULL;
Print(head->next);
}
return 0;
}
使用栈:
#include<iostream>
#include<stack>
using namespace std;
struct ListNode
{
int value;
ListNode *next;
};
void Print(ListNode *list)
{
stack<ListNode*>s;
while(list!=NULL)
{
s.push(list);
list=list->next;
}
while(!s.empty())
{
cout<<s.top()->value<<endl;
s.pop();
}
}
int main()
{
int n;
while(cin>>n)
{
ListNode *head=(ListNode*)malloc(sizeof(ListNode*));
ListNode *list=head;
while(n--)
{
int m;cin>>m;
ListNode *newNode=(ListNode*)malloc(sizeof(ListNode*));
newNode->value=m;
list->next=newNode;
list=list->next;
}
list->next=NULL;
Print(head->next);
}
return 0;
}
浙公网安备 33010602011771号