#include <stdio.h>
#include <stdlib.h>
#define MAX 10
struct List
{
int num;
int total;
struct List *Next;
};
typedef struct List Node;
typedef Node *Link;
int Data[2][MAX]={1,3,5,7,9,2,4,6,8,10,
11,13,15,17,19,12,14,16,18,20};
Link Invert_List(Link Head)
{
Link Pointer;
Link Back;
Link Next;
Back = Head;
Pointer->Next = Back;
Back = Pointer;
Pointer = Next;
while(Pointer->Next !=NULL){
Next = Pointer->Next;
Pointer->Next = Back;
Back = Pointer;
Pointer = Next;
}
Pointer->Next=Back;
Head = Pointer;
return Head;
}
void Print_List(Link Head)
{
Link Pointer;
Pointer = Head;
while(Pointer!=NULL){
printf("[%d,%d]",Pointer->num,Pointer->total);
Pointer=Pointer->Next;
}
printf("\n");
}
void Free_List(Link Head)
{
Link Pointer;
while(Head!=NULL){
Pointer = Head;
Head = Head->Next;
free(Pointer);
}
}
Link Create_List(Link Head)
{
Link New;
Link Pointer;
int i;
Head = (Link)malloc(sizeof(Node));
if(Head==NULL)
printf("Memory allocate Failure!!\n");
else{
Head->num = Data[0][0];
Head->total = Data[1][0];
Head->Next = NULL;
Pointer = Head;
for(i=1;i<MAX;i++){
New = (Link)malloc(sizeof(Node));
New->num = Data[0][i];
New->total = Data[1][i];
New->Next = NULL;
Pointer->Next = New;
Pointer = New;
}
}
return Head;
}
void main()
{
Link Head = Create_List(Head);
if(Head!=NULL){
printf("Input Data:\n");
Print_List(Head);
Head = Invert_List(Head);
printf("After Inver\n");
Free_List(Head);
}
}
參考資料:
資料結構 黃國瑜/葉乃菁