[刷题] PTA 02-线性结构3 Reversing Linked List

链表逆序

 1 #include<iostream>
 2 #include<stdio.h>
 3 #include<algorithm>
 4 using namespace std;
 5 #define MAXSIZE 1000010
 6 
 7 struct node {
 8     int data;
 9     int next;
10 } node[MAXSIZE];
11 
12 int List[MAXSIZE];
13 int main() {
14     int First,n,k;
15     cin>>First>>n>>k;
16     int Address,Data,Next;
17     for(int i=0; i<n; i++) {
18         cin>>Address>>Data>>Next;
19         node[Address].data=Data;
20         node[Address].next=Next;
21     }
22     int j=0;
23     int p=First;
24     while(p!=-1) {
25         List[j++]=p;
26         p=node[p].next;
27     }
28 int i=0;
29 while(i+k<=j) {
30     reverse(&List[i],&List[i+k]);
31     i=i+k;
32 }
33 for(i=0; i<j-1; i++)
34     printf("%05d %d %05d\n",List[i],node[List[i]].data,List[i+1]);
35 printf("%05d %d -1\n",List[i],node[List[i]].data);
36 return 0;
37 }

分析:

1、用了c++函数库中的reverse()

2、直接用数组模拟内存

 

posted @ 2019-05-03 21:05  cxc1357  阅读(168)  评论(0编辑  收藏  举报