主要的思想还是 上课的那个PPT上面的 链表反转的思想。

然后加一点七七八八的 递推。

一层一层往下翻转就好啦。

1A 真开心。

代码:http://paste.ubuntu.net/16506799/

#include <cstdio>
#include <iostream>
using namespace std;
struct node
{
int address;
int data;
struct node* next;
};
struct pnode
{
int address;
int data;
int next;
}p[1000005];
node *head=new node();
int fist,n,k,l=0;
void insert(node *p1,node *p2)
{
p2->next=p1->next;
p1->next=p2;
return ;
}
node * del(node *p)
{
node *t=p->next;
p->next=t->next;
return t;
}
void change (node *temp,int s)
{
int cnt=1;
if(s==0)return ;
node *p=temp,*t;
p=p->next;
while(cnt<k)
{
cnt++;
t=del(p);
insert(temp,t);
}
change(p,s-1); }
void creat()
{
//head=NULL;
head->next=NULL;
node *p1=new node();
p1=head;
while(fist!=-1)
{
l++;
node *p2=new node();
p2->address=p[fist].address;
p2->data=p[fist].data;
insert(p1,p2);
p1=p2;
fist=p[fist].next;
}
change(head,l/k);
return ;
}
void print()
{
head=head->next;
while(head->next!=NULL)
{
printf("%05d %d %05d\n",head->address,head->data,head->next->address );
head=head->next;
}
printf("%05d %d -1",head->address,head->data );
}
int main()
{ cin>>fist>>n>>k;
int i;
for(i=0;i<n;i++)
{
int ad,da,ne;
scanf("%d%d%d",&ad,&da,&ne);
p[ad].address=ad;
p[ad].data=da;
p[ad].next=ne;
}
creat();
print();
return 0;
}

PAT1024 强行用链表写了一发。的更多相关文章

  1. java实现双链表(差点没写吐系列...)

    刚才把单链表写完了,现在又把双链表写了,双链表和单链表的区别就是每个节点有prior和next两个指针,不同于单链表的一个next指针,而且,正是因为有这两个指针,所以双链表可以前后两个方向去移动指针 ...

  2. Codeforces Round #350 (Div. 2) E. Correct Bracket Sequence Editor (链表)

    题目链接:http://codeforces.com/contest/670/problem/E 给你n长度的括号字符,m个操作,光标初始位置是p,'D'操作表示删除当前光标所在的字符对应的括号字符以 ...

  3. Linux 内核 链表 的简单模拟(1)

    第零章:扯扯淡 出一个有意思的题目:用一个宏定义FIND求一个结构体struct里某个变量相对struc的编移量,如 struct student { int a; //FIND(struct stu ...

  4. 深夜学算法之SkipList:让链表飞

    1. 前言 上次写Python操作LevelDB时提到过,有机会要实现下SkipList.摘录下wiki介绍: 跳跃列表是一种随机化数据结构,基于并联的链表,其效率可比拟二叉查找树. 我们知道对于有序 ...

  5. 【easy】206. Reverse Linked List 链表反转

    链表反转,一发成功~ /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; ...

  6. B - Broken Keyboard (a.k.a. Beiju Text) 数组模拟链表

    You're typing a long text with a broken keyboard. Well it's not so badly broken. The only problem wi ...

  7. HDU 1251 统计难题(字典树 裸题 链表做法)

    Problem Description Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己 ...

  8. C++学习(三十四)(C语言部分)之 链表

    1.栈和队列 操作 增查改删重点 插入删除先进先出 -->队列先进后出 -->栈2.链表 写之前先画图存储数据的方式 通过指针将所有的数据链在一起数据结构的目的 管理存储数据 方便快速查找 ...

  9. HDU 2095 find your present (2) 动态链表

    解题报告:输入一个n,后面紧跟着输入n个数,输入的这n个数中,除了有一个数的个数为奇数外,其它的数的个数都是偶数个,现在要你找出这个个数为奇数的这个数. 看起来好像很简单的样子,不过,这题的重点不在这 ...

随机推荐

  1. phpstudy lamp

    phpStudy for Linux (lnmp+lamp一键安装包 现在不考虑安装这个  (完整版:http://lamp.phpstudy.net/phpstudy-all.bin) 安装: wg ...

  2. linux操作系统的目录以及用户权权限的管理

    linux操作系统的目录以及对目录的操作 一: linux操作系统的目录结构   bin #可执行程序的安装目录 , 命令 boot #系统启动引导目录 dev #设备目录 etc #软件配置文件目录 ...

  3. Ubuntu12.04下zxing源码编译

    1.下载zxing源码 git clone https://github.com/15903016222/zxing-cpp.git 2.安装依赖工具cmake sudo apt-get instal ...

  4. fiddler响应报文的headers属性详解

    fiddler响应报文的headers属性详解 (1)Cache头域 1. Cache-Control 在请求报文已经说过了,用于设置缓存的属性,浏览内容不被缓存. 2. Data 生成消息的具体时间 ...

  5. player视频.js

    var playStatus = 'pending'; var html_a = '<div class="weui-dialog__bd" id="lly_dia ...

  6. 查看dll 的是32位还是64位

    1. dumpbin 命令 ** dumpbin 路径写入环境变量 ***  使用 dumpbin /headers 文件名去查看 [X86 表示32位  x64表示64位] 2. 使用 DEPEND ...

  7. javascript array.property.slice.call

    function foo() { //var var1=Array.prototype.slice.call(arguments); var var1=[].slice.call(arguments) ...

  8. 20145226夏艺华 《Java程序设计》第1周学习总结

    http://www.cnblogs.com/bestixyh/p/5779286.html 去年暑假写的,确实比较丑陋,保留下来也是为了激励自己作出更多改变.寒假写的每一篇博客都尽最大努力养成了良好 ...

  9. .net core中Primitives.StringValues 处理

    参考地址:https://stackoverflow.com/questions/36297329/primitives-stringvalues-how-to-deserialize-value-t ...

  10. 机器学习实战:决策树的存储读写文件报错(Python3)

    错误原因:pickle模块存储的是二进制字节码,需要以二进制的方式进行读写 1. 报错一:TypeError: write() argument must be str, not bytes 将决策树 ...