剑指offer--面试题6:从头到尾打印链表
2017-06-27 21:26
471 查看
#include<stdio.h>
#include<malloc.h>
#include<stack>
using namespace std;
typedef struct LNode
{
int data;
struct LNode *next;
}*LinkList;
LinkList Create_List_Tail(int length)
{//建立链表
LNode *L,*s,*r; //L指向头结点,r指向尾结点,s指向新添加结点
L=(LinkList)malloc(sizeof(LNode));
L->next =NULL;//头结点L->data不存东西
r=L;
for(int i=0;i<length;++i)
{
s=(LinkList)malloc(sizeof(LNode));
scanf("%d",&s->data);
r->next =s;
r =s;
}
r->next =NULL;
return L; //返回链表
}
/* 用栈实现从尾到头打印单链表 */
void Reverse_1(LinkList L)
{
stack<int> s;
LNode *p = L->next;
while( L!=NULL &&p != NULL) //入栈
{
s.push(p->data);
p = p->next;
}
while(! s.empty()) //出栈
{
printf("%d ",s.top());
s.pop();
}
}
/* 用递归实现从尾到头打印单链表 */
void Reverse_2(LinkList L)
{
LNode *p=L->next;
if(L!=NULL && p != NULL)
{
Reverse_2(p);
printf("%d ",p->data);
}
}
int main()
{
int length;
printf("表长:");
scanf("%d",&length);
LinkList L = Create_List_Tail(length);
printf("栈方式实现:\n");
Reverse_1(L);
printf("\n");
printf("递归方式实现:\n");
Reverse_2(L);
printf("\n");
return 0;
}
相关文章推荐
- 剑指offer面试题5 从头到尾打印链表(java)
- 剑指Offer-【面试题05:从头到尾打印链表】
- 剑指offer面试题5 从头到尾打印链表(java)
- 剑指offer 面试题5——从头到尾打印链表
- 【剑指offer】面试题6:从头到尾打印链表
- [剑指offer]面试题5:从尾到头打印链表
- [牛客网,剑指offer,python] 从头到尾打印链表
- 剑指offer——面试题6:从尾到头打印单向链表
- 剑指offer-面试题5-从尾到头打印链表
- 剑指offer-从头到尾打印链表
- 剑指offer面试题——从尾到头打印链表
- [牛客网,剑指offer,python] 从头到尾打印链表
- 剑指Offer:面试题5——从尾到头打印链表(java实现)
- 剑指Offer----面试题五:从尾到头打印链表
- [牛客网,剑指offer,python] 从头到尾打印链表
- <剑指offer 面试题6-2>从尾到头打印链表 Java
- 剑指offer 面试题5:从尾到头打印链表 题解
- [剑指offer]从头到尾打印链表