PAT 甲级 1041 Linked List Sorting (25)
2017-11-15 19:38
330 查看
时间限制 1000 ms内存限制 65536 KB代码长度限制 100 KB判断程序 Standard(来自小小)
用结构体模拟的链表进行排序,数组的下标必须是当前节点的地址。
还有就是排完序之后next的值没有变,下一个节点的地址不再是next了,要输出b[i+1]的地址。
感觉链表题仿佛没有一个是用链表写的。。哈哈哈哈哈,,
题目描述
A linked list consists of a series of structures, which are not necessarily adjacent in memory. We assume that each structure contains an integer key and a Next pointer to the next structure. Now given a linked list, you are supposed to sort the structures according to their key values in increasing order.
输入描述:
Each input file contains one test case. For each case, the first line contains a positive N (5) and an address of the head node, where N is the total number of nodes in memory and the address of a node is a 5-digit positive integer. NULL is represented by -1. Then N lines follow, each describes a node in the format: Address Key Next where Address is the address of the node in memory, Key is an integer in [-105, 105], and Next is the address of the next node. It is guaranteed that all the keys are distinct and there is no cycle in the linked list starting from the head node.
输出描述:
For each test case, the output format is the same as that of the input, where N is the total number of nodes in the list and all the nodes must be sorted order.
输入例子:
5 00001 11111 100 -1 00001 0 22222 33333 100000 11111 12345 -1 33333 22222 1000 12345
输出例子:
5 12345 12345 -1 00001 00001 0 11111 11111 100 22222 22222 1000 33333 33333 100000 -1
用结构体模拟的链表进行排序,数组的下标必须是当前节点的地址。
还有就是排完序之后next的值没有变,下一个节点的地址不再是next了,要输出b[i+1]的地址。
感觉链表题仿佛没有一个是用链表写的。。哈哈哈哈哈,,
#include<bits/stdc++.h> using namespace std; const int N=112345; struct node { int ad; int data; int next; }a ,b ; bool cmp(node a,node b) { return a.data<b.data; } int main() { int n,x; scanf("%d%d",&n,&x); for(int i=0;i<=n-1;i++) { int ad,data,next; scanf("%d%d%d",&ad,&data,&next); a[ad].ad=ad; a[ad].data=data; a[ad].next=next; } if(x==-1) { printf("0 -1\n"); } else { int i=0; while(x!=-1) { b[i].ad=a[x].ad; b[i].data=a[x].data; b[i].next=a[x].next; x=a[x].next; i++; } sort(b,b+i,cmp); printf("%d %05d\n",i,b[0].ad); for(int j=0;j<=i-2;j++) { printf("%05d %d %05d\n",b[j].ad,b[j].data,b[j+1].ad); } printf("%05d %d -1\n",b[i-1].ad,b[i-1].data); } return 0; }
相关文章推荐
- 1002. A+B for Polynomials (25) PAT甲级刷题
- PAT - 甲级 - 1117. Eddington Number(25) (题意理解)
- 浙江大学PAT_甲级_1028. List Sorting (25)
- 【PAT甲级】1079. Total Sales of Supply Chain (25)
- PAT甲级1043. Is It a Binary Search Tree (25)
- PAT甲级1056. Mice and Rice (25)
- 1118. Birds in Forest (25) PAT 甲级
- 1122. Hamiltonian Cycle (25) PAT 甲级
- PAT(甲级)1036. Boys vs Girls (25)
- 1067. Sort with Swap(0,*) (25) PAT甲级
- PAT - 甲级 - 1130. Infix Expression (25) (中序遍历)
- PAT - 甲级 - 1002. A+B for Polynomials (25)
- 【PAT甲级】1036. Boys vs Girls (25)——JAVA实现
- 浙江大学PAT_甲级_1048. Find Coins (25)
- PAT 甲级 1037. Magic Coupon (25)
- 1028. List Sorting (25)-PAT甲级
- 1020. Tree Traversals (25)-PAT甲级真题
- 浙大pat | 浙大pat 牛客网甲级1061 Insert or Merge (25)判断是插入排序还是归并排序
- PAT 甲级 1098. Insertion or Heap Sort (25)
- 1043. Is It a Binary Search Tree (25)-PAT甲级真题