单链表逆置
来源:互联网 发布:全站仪怎么导出数据 编辑:程序博客网 时间:2024/05/16 15:08
单链表逆置
题目:输入一个单向链表,将该单链表逆置。
举例:原来链表为1->2->3->4->5翻转为5->4->3->2->1
链表结点定义如下:
struct ListNode{ int m_nKey; ListNode* m_pNext;};
答:
#include "stdafx.h"#include <iostream>#include <fstream>using namespace std;struct ListNode{ int m_nKey; ListNode* m_pNext;};//构造链表void CreateList(ListNode *&pHead){ fstream fin("list.txt"); ListNode *pNode = NULL; ListNode *pTmp = NULL; int data; fin>>data; while (data) { pNode = new ListNode; pNode->m_nKey = data; pNode->m_pNext = NULL; if (NULL == pHead) { pHead = pNode; pTmp = pNode; } else { pTmp->m_pNext = pNode; pTmp = pNode; } fin>>data; }}//翻转单链表void ReverseLink(ListNode *&pHead){ if (NULL == pHead) { return; } ListNode *pNode = pHead; ListNode *Prev = NULL; ListNode *pNext = NULL; while (NULL != pNode) { pNext = pNode->m_pNext; if (NULL == pNext) { pHead = pNode; } pNode->m_pNext = Prev; Prev = pNode; pNode = pNext; }}void PrintList(ListNode *pHead){ if (NULL == pHead) { return; } ListNode *pNode = pHead; while (NULL != pNode) { cout<<pNode->m_nKey<<" "; pNode = pNode->m_pNext; } cout<<endl;}int _tmain(int argc, _TCHAR* argv[]){ ListNode *pHead = NULL; cout<<"原来的链表:"; CreateList(pHead); PrintList(pHead); ReverseLink(pHead); cout<<"翻转的链表:"; PrintList(pHead); return 0;}
运行界面如下:
建造链表的list.txt文件如下:
12 11 10 9 8 7 6 5 4 3 2 1 0
分类: 算法面试
0 0
- 单链表逆置
- 单链表逆置
- 单链表逆置。
- 单链表逆置
- 单链表逆置
- 单链表逆置
- 单链表逆置
- 单链表逆置
- 单链表逆置
- 单链表逆置
- 单链表逆置
- 单链表逆置
- 单链表逆置
- 单链表逆置
- 单链表逆置
- 单链表逆置
- 单链表逆置
- 单链表逆置
- Android 自定义View (六)
- LINUX内核升级 - 更新网卡驱动
- Mac OS--CLOC
- 基于一次手势训练的kinect 3D 动态手势识别(提纲)
- svn 搭建
- 单链表逆置
- 黑马程序员——集合框架
- 卡尔曼滤波原理
- & && | || 什么意思?怎么用?
- 准备蓝桥杯--dyx--01字串
- 《RFID技术与应用》第一部分基础理论学习
- 对分查找
- 一个html分页器的demo
- 图片缓存之内存缓存技术LruCache,软引用