02-线性结构3 Reversing Linked List

来源:互联网 发布:苹果mac终端怎么进入 编辑:程序博客网 时间:2024/06/06 01:02
题目:Reversing Linked List
题意:给出一个链表,然后每k个值要进行翻转,最后输出翻转后的链表!
思路:这个自己没想出来,老想的要变换所有地址,导致写不出来。参考了网上的!
其实不用更换下一地址,只需把每个值的地址记录下来,不用记录它的下一结点,然后遍历整个链表,每k个将他们的地址修改了即可,然后输出时也相应的按储存的当前地址和下一坐标的地址即可!
参考:流氓丶LY博客
代码:
#include <cstdio>const int maxn = 100005;struct node{int data;int nextt;}a[maxn];int List[maxn];inline void reverse(int a,int b){//翻转 while(a < b){int temp = List[a];List[a] = List[b];List[b] = temp;a++;b--;}}int main(){int s,n,k;int ads,nex,val;scanf("%d%d%d",&s,&n,&k);for(int i=0;i<n;i++){scanf("%d%d%d",&ads,&val,&nex);a[ads].data = val; a[ads].nextt = nex;}int p = s,cnt = 0;while(p != -1){//将链表的每个地址按顺序存放到一个数组中 List[cnt++] = p;p = a[p].nextt;}p = k;while(p <= cnt){//每k个进行翻转 reverse(p-k,p-1);p+=k;}for(int i=0;i<cnt-1;i++)printf("%05d %d %05d\n",List[i],a[List[i]].data,List[i+1]);printf("%05d %d -1\n",List[cnt-1],a[List[cnt-1]].data);return 0;}

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 26岁的1型糖尿病怎么办 睡前吃得太饱怎么办 胰岛素2小时>300怎么办 血清c肽测定高怎么办 体测蛋白质和骨骼肌偏高怎么办 半个月重了十斤怎么办 月经停了2个月怎么办 在练腹肌中腹痛怎么办 越练肌肉越肥怎么办 喘不过气来 心闷怎么办 被气得喘不过气怎么办 健身完头晕想吐怎么办 吃多了反胃头晕怎么办 合同未约定退货货物积压怎么办 运动内衣把胸压平怎么办 经常穿皮鞋脚臭怎么办 买衣服胸围小了怎么办 内衣下胸围太紧怎么办 穿文胸衣服要开怎么办 运动内衣的拉链老来怎么办 胸罩没干急着穿怎么办 跑步时大腿很痒怎么办 胖大腿内侧磨伤怎么办 内衣围带过松怎么办 内衣底围特别紧怎么办 全棉衣服上的油怎么办 高腰牛仔裤腰大了怎么办 新买衣服太硬怎么办 棉麻的衣服发硬怎么办 新衣服太硬怎么办雪纺 衣服硬的咯人怎么办 脖子上的勒痕怎么办 腿上容易出现勒痕怎么办 身上总有内裤印怎么办 内裤穿出了印怎么办 饮水机热水口不出水怎么办 饮水机热水口出水小怎么办 新饮水机热水口出水小怎么办 白钢水桶中间支撑怎么办 17岁想长高应该怎么办 身子瘦但脸胖怎么办