主要的思想还是 上课的那个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. sort的用法

    早一段时间一直没有理解sort的用法,在早几天终于是研究的明白的,所以就来分享一下,如果你也被这个方法困扰,没懂原理,可以看一下这遍文章,希望有所帮助. 第一种,最简单的排序,纯数字排序: var a ...

  2. md5加密+盐方式一

    这种方法是采用随机生成盐值加入password中组合成的新密码,下面是md5+盐的一个工具类,直接导入使用即可! 工具类 package com.oracle.utils; import java.s ...

  3. PHP中$a && $b = $c 语法的用法

    $a && $b = $c 表示:如果$a为真,则执行$b = $c,否则不执行. 可以用if语句替代: if ($a) { $b = $c; } 实例: $a = true; $b ...

  4. ArrayList的源码分析(基于jdk1.8)

    1.初始化 transient Object[] elementData; //实际存储元素的数组 private static final Object[] DEFAULTCAPACITY_EMPT ...

  5. Python学习3——变量如何存储数据

    数值类型:包括整型.浮点型 变量名字代表的是存储地址. num01 = 100 print(id(num01)) #输出变量num01存储的内存地址,输出的是十进制值 num02 = num01 pr ...

  6. (杭电 1702)ACboy needs your help again!

    ACboy needs your help again! Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav ...

  7. vue组件化编程

    vue文件包含3个部分 <template> <div></div> </template> <script> export default ...

  8. Redis的n种妙用,不仅仅是缓存

    redis是键值对的数据库,常用的五种数据类型为字符串类型(string),散列类型(hash),列表类型(list),集合类型(set),有序集合类型(zset) Redis用作缓存,主要两个用途: ...

  9. 武汉ber优步司机奖励政策(1月4日~1月10日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  10. CF 741 D. Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths

    D. Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths http://codeforces.com/problemset/probl ...