剑指offer 反转链表
2016-03-12 17:43
465 查看
题目描述:
输入一个链表,反转链表后,输出链表的所有元素。
(hint : 请务必使用链表)
和这道题一样。。
/article/9006341.html
输入一个链表,反转链表后,输出链表的所有元素。
(hint : 请务必使用链表)
和这道题一样。。
/article/9006341.html
#include <cstdio> using namespace std; typedef struct Node{ int val; Node *next; Node(int val = -1) : val(val), next(NULL) {} }*pNode; class List{ private: pNode Head; pNode Tail; void Delete_List(pNode); pNode Recursion_Reserve(); pNode Non_Recursion_Reserve(pNode); void Traverse(pNode); public: void Traverse(); void Insert_Node(int x); List(); ~List(); }; void List::Insert_Node(int x){ Node *node = new Node(x); this->Tail->next = node; this->Tail = node; } pNode List::Recursion_Reserve(){ pNode p = this->Head->next; pNode pn = p->next; pNode pnn = NULL; this->Head->next = NULL; p->next = this->Head; while(pn){ pnn = pn->next; pn->next = p; p = pn; pn = pnn; } return p; } pNode List::Non_Recursion_Reserve(pNode node){ if(node->next == NULL){ return node; } else{ pNode p = Non_Recursion_Reserve(node->next); node->next->next = node; node->next = NULL; return p; } } void List::Traverse(pNode node){ if(node && node != this->Head){ printf("%d", node->val); if(node->next != this->Head) printf(" "); Traverse(node->next); } } void List::Traverse(){ // Traverse(Recursion_Reserve()); Traverse(Non_Recursion_Reserve(this->Head)); } void List::Delete_List(pNode node){ if(node){ Delete_List(node->next); delete node; } } List::List(){ Head = Tail = new Node(); } List::~List(){ Delete_List(this->Tail); } int main() { int n; while(scanf("%d", &n) != EOF){ List *list = new List; int x; for(int i = 0; i < n; i++){ scanf("%d", &x); list->Insert_Node(x); } if(n == 0) printf("NULL"); else list->Traverse(); printf("\n"); // list->Delete_Content(); delete list; } return 0; }
相关文章推荐
- 论TextView的超链接使用、显示表情、Html语法支持、跑马灯效果的实现
- css中的content的使用
- erlang protobuffer
- 多个块标签float:left之后水平居中解决办法
- 关于JavaScript的内存分配
- HTML, CSS学习笔记(完整版)
- 《剑指offer》——字符流中第一个不重复的字符
- Node.js编写爬虫的基本思路及抓取百度图片的实例分享
- 两个JSP页面跳转传参数
- HTML中的Node和Element的区别
- react-native 学习中网站及博客
- JavaScript中循环遍历Array与Map的方法小结
- javascript 对象2
- JavaScript中Element与Node的区别,children与childNodes的区别
- [DIV/CSS] CSS3的content属性详解
- [DIV/CSS] CSS3的content属性详解
- react-js demo 地址
- JavaScript对表单验证的例子
- JS与OC交互(iPhone项目)中JavaScriptCore.framework的使用
- ACM学习历程—Hihocoder [Offer收割]编程练习赛1