#include <stdio.h> #include <stdlib.h> #define Max 10 struct List { int Number; int Total; struct List *Next; }; typedef struct List Node; typedef Node *Link; int Data[2][Max] = { 3, 9, 25, 5, 7, 26, 65, 80, 2, 6, 1050, 3750, 1000, 5670, 2250, 9650, 2380, 1700, 3000, 2000 }; int SearchTime = 0; int List_Search(int Key, Link Head) { Link Pointer; Pointer = Head; while (Pointer != NULL) { SearchTime ++; if( Pointer->Number == Key) { printf("Data Number : %d\n", Pointer->Number); printf("Data Total : %d\n", Pointer->Total); return 1; } Pointer = Pointer->Next; } return 0; } 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->Number = 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->Number = Data[0][i]; New->Total = Data[1][i]; New->Next = NULL; Pointer->Next = New; Pointer = New; } } return Head; } void main() { Link Head; int Num; Head = Create_List(Head); if (Head != NULL) { printf("Please input the data number:"); scanf("%d", &Num); if(List_Search(Num, Head)) printf("Search Time = %d\n", SearchTime); else printf("Not Found!!\n"); Free_List(Head); } }