面试题 -- 从尾到头 反向打印链表
2014-02-16 22:07
453 查看
以下代码在vs2010 测试通过:
/** *解题思路: * 方法一:从头遍历链表,把每次遍历得到的值存在一个栈中,然后在输出栈中的数字 * 方法二:用递归的方法遍历链表,每次都先输出该节点的后一个节点 * (注)用递归的方法,如果链表很大,递归的层很深,可能会出现内存溢出,所以更好的方法是使用栈 */ #include "stdafx.h" #include "stdio.h" #include "stdlib.h" #define TRUE 1 #define FALSE 0 typedef struct ListNode{ int value; ListNode* next; }Node ; int createList(Node** list,int length); void reverseOrderList(Node* list); int _tmain(int argc, _TCHAR* argv[]){ Node* list = NULL; Node* plist; int result ; result = createList(&list,8); printf("原链表的顺序是:\n"); plist = list; if(result == 1){ while(plist->next != NULL){ plist = plist->next; printf("%d\t",plist->value); } } printf("\n反向链表的顺序是:\n"); Node* reverseList; reverseList = list->next; //去掉头节点 reverseOrderList(reverseList); system("pause"); return TRUE; } //创建一个单链表 int createList(Node **list,int length){ Node* rootp; Node* newNode; if(*list == NULL) *list = (Node*)malloc(sizeof(Node)); (*list)->value = length; (*list)->next = NULL; rootp = *list; while(length > 0){ newNode = (Node*)malloc(sizeof(Node)); if(newNode == NULL){ return FALSE; } newNode->value = length; rootp->next = newNode; rootp = newNode; length--; } newNode->next = NULL; return TRUE; } /* * 用栈存储数字,实现反向链表的输出 */ int reverseOrderList(Node* pHead){ //建立一个空的栈 sqStack* s = NULL; s = (sqStack *)malloc(sizeof(sqStack)); s->top = -1; //入栈 while(pHead != NULL){ s->top++; s->data[s->top] = pHead->value; pHead = pHead->next; } //出栈 while(s->top != -1){ printf("%d\t",s->data[s->top]); s->top-- ; } return TRUE; } */ /* *用递归的方法,反向输出链表 */ void reverseOrderList(Node* list){ if(list != NULL){ if(list->next != NULL){ reverseOrderList(list->next); } } printf("%d\t",list->value); }
相关文章推荐
- 【剑指Offer学习】【面试题5 : 从尾到头打印链表】
- 剑指offer-面试题05-从尾到头打印链表
- 【剑指offer】面试题5:链表-从尾到头打印链表
- 面试题5-从尾到头打印链表
- 面试题四 从尾到头打印链表
- 剑指Offer(第二版)面试题6:从尾到头打印链表
- 剑指offer 面试题5 从尾到头打印链表(递归实现)
- 面试题5:从尾到头打印链表的c++代码实现
- 【面试题】从尾到头打印链表&&链表中倒数第K个结点
- 面试题5:从尾到头打印链表
- 面试题5:从尾到头打印链表
- 《剑指Offer》面试题:从尾到头打印链表
- 剑指Offer_面试题05_从尾到头打印链表
- 面试题---从尾到头打印链表
- 剑指offer-面试题5.从尾到头打印链表
- 剑指Offer 面试题5 从尾到头打印链表
- 剑指offer 面试题5 从尾到头打印链表 java版答案
- 【剑指Offer面试题】 九度OJ1511:从尾到头打印链表
- 剑指offer 面试题5 从尾到头打印链表(栈实现)
- 面试题5:从尾到头打印链表