博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1025. 反转链表 (25)
阅读量:6500 次
发布时间:2019-06-24

本文共 2292 字,大约阅读时间需要 7 分钟。

给定一个常数K以及一个单链表L,请编写程序将L中每K个结点反转。例如:给定L为1→2→3→4→5→6,K为3,则输出应该为3→2→1→6→5→4;如果K为4,则输出应该为4→3→2→1→5→6,即最后不到K个元素不反转。

输入格式:

每个输入包含1个测试用例。每个测试用例第1行给出第1个结点的地址、结点总个数正整数N(<= 105)、以及正整数K(<=N),即要求反转的子链结点的个数。结点的地址是5位非负整数,NULL地址用-1表示。

接下来有N行,每行格式为:

Address Data Next

其中Address是结点地址,Data是该结点保存的整数数据,Next是下一结点的地址。

输出格式:

对每个测试用例,顺序输出反转后的链表,其上每个结点占一行,格式与输入相同。

输入样例:

00100 6 4

00000 4 99999
00100 1 12309
68237 6 -1
33218 3 00000
99999 5 68237
12309 2 33218

输出样例:

00000 4 33218

33218 3 12309
12309 2 00100
00100 1 99999
99999 5 68237
68237 6 -1

附上一个递归解法(更新于2017/8/18)

#include 
#include
using namespace std;struct node{ int val; int next;}node[100000];int reverseKGroup(int head,int k){ int cur=head,cnt=0; while(cur!=-1&&cnt!=k) { cur=node[cur].next; ++cnt; } if(cnt==k) { cur=reverseKGroup(cur,k); while(cnt-->0) { int temp=node[head].next; node[head].next=cur; cur=head; head=temp; } head=cur; } return head;}int main(){ int head,n,k; cin>>head>>n>>k; while(n--) { int add,val,next; cin>>add>>val>>next; node[add].val=val; node[add].next=next; } head=reverseKGroup(head,k); while(node[head].next!=-1) { printf("%05d %d %05d\n",head,node[head].val,node[head].next); head=node[head].next; } printf("%05d %d %d\n",head,node[head].val,node[head].next); return 0;}

以前按照链表的操作方法好像是写了一大堆代码orz,而且思维过程真的是很繁琐;

今天再来看这道题,发现这道题其实也是蛮水的。。。
思路:
将数据存入node,然后stack和queue一下就ok了

#include 
struct node{ int address; int data; int next;}node[100001];struct node *stack[100001];struct node *queue[100001];int top,front,rear;int main(){ int head,n,k; scanf("%d %d %d",&head,&n,&k); while(n--){ int add,d,nextadd; scanf("%d %d %d",&add,&d,&nextadd); node[add].address=add; node[add].data=d; node[add].next=nextadd; } int x=head,cur=head,tag=0; while(x!=-1){ cur=x; for(int i=0;i
address,queue[front]->data,queue[front+1]->address); ++front; } printf("%05d %d -1\n",queue[rear-1]->address,queue[rear-1]->data); return 0;}

放上截图:

这里写图片描述

转载于:https://www.cnblogs.com/xLester/p/7570415.html

你可能感兴趣的文章
(转) SYSTEM_HANDLE_INFORMATION中ObjectTypeIndex的定义
查看>>
使用HTML5监測站点性能
查看>>
洛谷P2089烤鸡
查看>>
智销功能_Shiro权限框架
查看>>
简单的实现IOCP服务器模型
查看>>
2017年9月11日 梁勇 java教材 编程练习题 第二章 2.15 键盘 读取两个点的坐标值(小数),控制台输出两点间距离。...
查看>>
Java面试题总结-Day4
查看>>
git学习
查看>>
Linux内核中锁机制之完成量、互斥量
查看>>
【转】解密“设计模式”
查看>>
正则表达式语法
查看>>
StringBuffer类
查看>>
Navicat for Oracle
查看>>
配置文件的简单使用
查看>>
K-Means聚类算法原理
查看>>
Xshell5中常用linux服务器命令集合
查看>>
合并区间(LintCode)
查看>>
npm升级到最新版本、指定版本
查看>>
作业-继承8
查看>>
响应式网页的布局设计
查看>>