链表逆序
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 ",List[i],node[List[i]].data,List[i+1]); 35 printf("%05d %d -1 ",List[i],node[List[i]].data); 36 return 0; 37 }
分析:
1、用了c++函数库中的reverse()
2、直接用数组模拟内存