主要的思想还是 上课的那个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. Python入门 —— 02基础语法

    基础语法入门学习推荐: 简明 Python 教程 下文仅为入门推荐书籍的补充与重点 多行语句:末尾使用斜杠 (  ) ,将一行分为多行 var = item1 + item2 + item3 注释: ...

  2. 原生JS实现移动端的轮播效果

    首先 我们想实现的效果是在手指按下拖动的时候图片能够跟随移动(无动画效果)然后松开手指后判断图片移动的位置 和某一个值进行比较 在这里我们默认定为盒子的1/3宽度 当x轴的移动位置大于1/3的时候图片 ...

  3. company.scss

    .company{ @extend .layout; width:100%; h3{ display: block; margin: 20px 0; text-align: left; } .comp ...

  4. 学习新框架laravel4 第一天(- -! 新公司版本使用的4,所以还要重新学习)

    路由使用: //根目录 Route::get('/', function() { return View::make('hello'); }); 自定义模板: /app/views/home/inde ...

  5. MFC非模态添加进程控件方法一(线程方法)

    由于非模态对话框的自己没有消息循环,创建后无法进行消息处理.需要和父窗口共用消息循环.如果单独在子窗口进行控件由于自己没有单独的消息循环,更新是无法进行的. 如果在父窗口更新控件会造成程序假死.如以下 ...

  6. python学习笔记:第15天 初识面向对象

    目录 1. 面向对象和面向过程 2. 面向对象如何编写: 3. 面向对象的三大特征 封装 继承 多态 1. 面向对象和面向过程 面向对象和面向过程的理解: ⾯向过程: ⼀切以事物的流程为核⼼. 核⼼是 ...

  7. VS2015 opencv 无法打开文件“opencv_calib3d330d.lib”

    我用的opencv是3.3.0,vs是2015版,找到项目的属性管理器,链接器——>输入——>附加依赖项 把其他的东西都删掉,只添加 opencv_world330d.lib;%(Addi ...

  8. [原创]用python实现系统状态监测和故障转移

    #coding: utf-8 import socket import select import time import os import threading def ser(): s = soc ...

  9. c#随机产生颜色

    有时为了满足现实的需要,我们想生成随机的较深的颜色,比如:彩色二维码,为了让手机.二维码识别设备可以正确识别,必须使用较深的颜色.如下图所示:        那么,如何实现呢?以下为源码: //C# ...

  10. JavaWeb——JavaWeb开发入门

    一.基本概念 1.1.WEB开发的相关知识 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资源分为: 静态web资源( ...