链表基本操作集合
//List code by Denis #include <stdio.h> #include <malloc.h> #define ture 1 #define false 0 typedef int ElemType; typedef struct list{ ElemType data; struct list *next; }LNode; //Create a list,nLength is the length of the line list LNode *Create(int nLength) { int i; LNode *Ln_Head,*Ln_tmp1,*Ln_tmp2; Ln_Head = (LNode *)malloc(sizeof(LNode)); Ln_tmp1 = Ln_Head; /*Save the Head pointor*/ printf("Input %d data\n",nLength); for(i=0;i<nLength;i++) { Ln_tmp2 = (LNode *)malloc(sizeof(LNode)); scanf("%d",&Ln_tmp2->data);//Input the data //Insert the data to the end odf list Ln_tmp1->next = Ln_tmp2; Ln_tmp1 = Ln_tmp2; Ln_tmp2->next = NULL; } return Ln_Head; } void ShowList(LNode *Head) { LNode *P= Head->next; printf("The list is:\n"); while(P) { printf("%d ",P->data); P = P->next; } printf("\n"); } //Get the length of the List int ListLength(LNode *Head) { int length=0; LNode *P; P = Head->next; while(P) { length++; P = P->next; } return length; } //Get the number i data that in the list to the e parameter //i must be >0,and <= List's length ElemType GetElem(LNode *Head, int i, ElemType e) { int j=0; LNode *P, *tmp; P = Head->next; while(P && j!=i) { tmp = P;//Save the P P = P->next; j++; } return tmp->data; } //verify whether E is the one of list //if return value==1,E is in the list int LocateElem(LNode *Head, ElemType E) { LNode *P; P = Head->next; while(P) { if(P->data == E)//,E is in the list return ture; else P = P->next; } return false; } //Insert E to the list' tail int ListInsert(LNode *Head, int ListLength, ElemType E) { LNode *P, *Tail; P = Head->next; //Get the tail pointor of the list while(P->next) { P = P->next; } Tail = P; P = (LNode *)malloc(sizeof(LNode)); P->data = E; Tail->next = P; P->next = NULL; //ListLength++; } LNode *Union(LNode *Head1, LNode *Head2) { int L1_len = ListLength(Head1); int L2_len = ListLength(Head2); ElemType E=Head2->next->data; int i=1; printf("Union list_1 and list_2\n"); for(i=1; i<=L2_len; i++) { E=GetElem(Head2,i,E); if(!LocateElem(Head1,E)) ListInsert(Head1,++L1_len, E); } return Head1; } void main() { LNode *Create(int nLength); void ShowList(LNode *Head); LNode *Head1,*Head2; int nLength; int equal = 0; int Verify_eq; ElemType Elem_E=0; Head1 = Create(4);//Create the first list that has 4 data ShowList(Head1); Head2 = Create(4);//Create the second list that has 4 data ShowList(Head2); //nLength = ListLength(Head2);//Get the length of the list Elem_E = GetElem(Head1, 2,Elem_E); Verify_eq = LocateElem(Head1, 5); //debug insert function //ListInsert(Head1,nLength,10000); Head1 = Union(Head1,Head2); ShowList(Head1); getch(); }
时间: 2024-09-29 20:36:18