链表反转程序
来源:互联网 发布:mac os无guid分区表 编辑:程序博客网 时间:2024/06/05 14:16
2014美团网笔试题里有一道链表反转的题目,要求是给出一个链表和一个数,求这个链表的分段反转。比如输入1->2->3->4->5->6和2,输出为2->1->4->3->6->5;若数为3,输出3->2->1->6->5->4;若为4,输出4->3->2->1->5->6。
我的方法是用栈,代码如下:
#include<stack>using namespace std;stack<Link*> s;void LinkTest(){printf("enter link elem:\n");char c;Link* LinkHead = NULL;Link* LinkIndex = NULL;int LinkLen = 0;// 链表初始化while ((c = getchar()) != '\n') {if (c == ' ')continue;if (LinkLen == 0){LinkHead = new Link;LinkHead->elem = c;LinkIndex = LinkHead;LinkIndex->next = NULL;}else{LinkIndex->next = new Link;LinkIndex = LinkIndex->next;LinkIndex->elem = c;LinkIndex->next = NULL;}LinkLen++; }printf("\n");printf("enter reverse length:\n");int RevLen;scanf("%d",&RevLen);printf("\n");if (RevLen < 1)return;// 反转链表LinkIndex = LinkHead;int count1 = 0;Link* Pre = NULL;while(LinkIndex != NULL){if (count1 % RevLen == 0 && count1 != 0){if (Pre == NULL)LinkHead = s.top();elsePre->next = s.top();Link* LinkTmpHead = s.top();Link* LinkTmp = s.top();s.pop();while(!s.empty()){LinkTmp->next = s.top();LinkTmp = LinkTmp->next;s.pop();}Pre = LinkTmp;LinkTmp->next = LinkIndex;}if (LinkIndex != NULL){s.push(LinkIndex);LinkIndex = LinkIndex->next;}count1++;}// 显示反转后的链表LinkIndex = LinkHead;while(LinkIndex != NULL){printf("%c",LinkIndex->elem);LinkIndex = LinkIndex->next;}printf("\n");}
0 0
- 链表反转程序
- 程序2——链表反转
- C/C++面试程序题(一)——字符串反转、链表反转的递归、非递归实现
- 链表反转
- 反转链表
- 单向链表反转
- 链表反转:
- 链表的反转
- 链表反转
- 反转单向链表
- 链表反转
- 单向链表反转
- 单向链表反转
- 链表的反转
- 链表反转
- 反转链表
- 链表反转
- 链表反转
- django 在shell环境下不自动提交的问题
- 如何让人在10秒之内记住你的APP
- 学习笔记——node.js
- nginx配置详细说明
- python解析json
- 链表反转程序
- 忘记电脑开机密码怎么办?2个妙招能解决
- codeforces round#235 (div.2) A,B,C
- Unity中利用NGUI制作简易字体
- 非聚簇索引
- 一下内容纯属转载(C#模拟http登陆)
- 比酒量问题
- 网络命令:ping、ipconfig、tracert、netstat、arp
- 择一城终 老遇一人白首