PAT1024 强行用链表写了一发。
主要的思想还是 上课的那个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 强行用链表写了一发。的更多相关文章
- java实现双链表(差点没写吐系列...)
刚才把单链表写完了,现在又把双链表写了,双链表和单链表的区别就是每个节点有prior和next两个指针,不同于单链表的一个next指针,而且,正是因为有这两个指针,所以双链表可以前后两个方向去移动指针 ...
- Codeforces Round #350 (Div. 2) E. Correct Bracket Sequence Editor (链表)
题目链接:http://codeforces.com/contest/670/problem/E 给你n长度的括号字符,m个操作,光标初始位置是p,'D'操作表示删除当前光标所在的字符对应的括号字符以 ...
- Linux 内核 链表 的简单模拟(1)
第零章:扯扯淡 出一个有意思的题目:用一个宏定义FIND求一个结构体struct里某个变量相对struc的编移量,如 struct student { int a; //FIND(struct stu ...
- 深夜学算法之SkipList:让链表飞
1. 前言 上次写Python操作LevelDB时提到过,有机会要实现下SkipList.摘录下wiki介绍: 跳跃列表是一种随机化数据结构,基于并联的链表,其效率可比拟二叉查找树. 我们知道对于有序 ...
- 【easy】206. Reverse Linked List 链表反转
链表反转,一发成功~ /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; ...
- 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 ...
- HDU 1251 统计难题(字典树 裸题 链表做法)
Problem Description Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己 ...
- C++学习(三十四)(C语言部分)之 链表
1.栈和队列 操作 增查改删重点 插入删除先进先出 -->队列先进后出 -->栈2.链表 写之前先画图存储数据的方式 通过指针将所有的数据链在一起数据结构的目的 管理存储数据 方便快速查找 ...
- HDU 2095 find your present (2) 动态链表
解题报告:输入一个n,后面紧跟着输入n个数,输入的这n个数中,除了有一个数的个数为奇数外,其它的数的个数都是偶数个,现在要你找出这个个数为奇数的这个数. 看起来好像很简单的样子,不过,这题的重点不在这 ...
随机推荐
- vue-知乎日志
1.项目API来源 2.项目地址 3.截图 4.功能 首页 轮播图 动态消息 下拉刷新 动态 ...
- IE8 如何 不显示 选项 卡,直接在任务显示 各个页面?
IE8 如何 不显示 选项 卡,直接在任务显示 各个页面? 在 工具->Internet 选项(o) ->常规--选项卡-设置->把第一个勾去掉 “启用选项卡浏览(需要重新启动 ...
- 使用docker搭建laravel记叙
第一步,先从dockerhub上pull一个docker镜 docker pull laraedit/laraedit 这个docker镜像已经安装了 nginx.laravel和mysql,所以不需 ...
- 关于MySQL的锁机制详解
锁概述 MySQL的锁机制,就是数据库为了保证数据的一致性而设计的面对并发场景的一种规则. 最显著的特点是不同的存储引擎支持不同的锁机制,InnoDB支持行锁和表锁,MyISAM支持表锁. 表锁就是把 ...
- 详解CSS中的几种长度px、em、pt
说说css的几种距离吧,大致有px.em.pt.pc.in.mm.cm.ex八种,其中最常见到的是px,我还见到过的有ex和mm.cm,当然后两个在当年见的更多. 其实px,我们最熟悉,而在电脑上也应 ...
- title中添加小图标
<title>标签中不能添加图片,但是可以添加小图标. 步骤: 1.做一个16 X 16像素的ico格式的图标.具体操作方法是,先在Photoshop中做一个透明背景的16 X 16像素P ...
- 常用代码c#
当使用 HttpContext.Current用到不是当前线程会出null的情况,可使用 System.Web.HttpRuntime.AppDomainAppPath获取程序的根路 string p ...
- 22-Consent 确认逻辑实现
1-定义一个从前台传到后台的viewModel namespace MvcCookieAuthSample.Models { public class InputConsentViewModel { ...
- python 字符串拼接效率打脸帖
https://www.cnblogs.com/chenjingyi/p/5741901.html 这篇博客写的好,字符串并不是+ 效率就一定比 "%" % ('a') 就低. 按 ...
- MySQL高级第四章——MySQL的锁机制
一.概述 1.定义 锁是计算机协调多个进程或线程并发访问某一资源的限制. 2.分类 操作类型来分: 读锁(共享锁)和写锁(排它锁) 数据粒度来分: 表锁和行锁 二.三锁 1.表锁——偏读 特点: 偏向 ...