剑指offer面试题5:从尾到头打印链表
2016-07-08 16:23
721 查看
#include "iostream" #include <string> #include "stack" using namespace std; struct ListNode{ int data; ListNode *next; }; void printdigui(ListNode *pHead) { if (pHead!=NULL) if (pHead->next != NULL) printdigui(pHead->next); cout << pHead->data; } void print(ListNode *pHead) { stack<ListNode*> nodes; if (pHead == NULL) return; ListNode *pNode=pHead; while (pNode!=NULL) { nodes.push(pNode); pNode = pNode->next; } while (!nodes.empty()) { pNode =nodes.top(); cout << pNode->data; nodes.pop(); } } void removeNode(ListNode **pHead,int value) { if (*pHead == NULL) return; ListNode *tobedelete=NULL; if ((*pHead)->data == value) { tobedelete = *pHead; *pHead = (*pHead)->next; } else { ListNode *pNode = *pHead; while (pNode->next != NULL&&pNode->next->data != value) pNode = pNode->next; if (pNode->next != NULL&&pNode->next->data == value) { tobedelete = pNode->next; pNode->next = pNode->next->next; } } if (tobedelete!=NULL) { delete tobedelete; tobedelete = NULL; } } void addToTail(ListNode **pHead,int value) { ListNode *pNew = new ListNode(); pNew->data = value; pNew->next = NULL; if (*pHead == NULL) *pHead = pNew; else { ListNode *pNode = *pHead; while (pNode->next != NULL) pNode = pNode->next; pNode->next = pNew; } } int main() { ListNode *pHead=NULL; addToTail(&pHead, 1); addToTail(&pHead, 2); addToTail(&pHead, 3); //removeNode(&pHead, 3); /*cout << pHead->data << endl; cout << pHead->next->data << endl;*/ //print(pHead); printdigui(pHead); system("pause"); return 0; }
相关文章推荐
- 剑指offer-4-面试24:二叉搜索树的后序遍历序列
- 怎么区别java程序员技术级别?
- 剑指Offer:面试题30——最小的k个数(java实现)
- 软件测试&软件测试工程师
- 15 张令人喷饭的 IT 趣图(第1季)
- [面试题] 替换空格和清除空格
- 面试题2
- 面试题2
- 面试题
- 面试题
- 59条令人捧腹但真实的程序员编程语录
- 剑指offer面试题4:替换空格
- 剑指offer之面试题14:调整数组顺序使得奇数位于偶数前面
- 黑马程序员----面试题之银行调度系统
- 黑马程序员----面试题之交通管理系统
- 李洪强经典面试题28
- 黑马程序员_Java基础_我的Day10学习笔记
- 博客转移
- 为什么不好聚好散
- 面试题27:二叉搜索树与双向链表