The Sqlist for Linear table | Data
The Sqlist for Linear table | Data
-
- The Code in Data book (5th Edition) from the 35 page to 37 page
The Code in Data book (5th Edition) from the 35 page to 37 page
#define MaxSize 50typedef int ElemType;//Sqlist structuretypedef struct{ ElemType data[MaxSize]; //save Sqlist elements int length; //save Sqlist length} SqList;//Create Sqlistvoid CreateList(SqList *&L, ElemType a[], int n) { L = (SqList *) malloc(sizeof(SqList)); for ( int i = 0; i < n; i++ ) L->data[i] = a[i]; L->length = n;}//Initialization Sqlistvoid InitList(SqList * &L){ L = (SqList *)malloc(sizeof(SqList));//Allocate space for Sqlist L->length = 0;//Make empty linear table length 0}//Destroyed Sqlistvoid DestroyList(SqList *&L) { free(L);}//Determine if a Sqlist is emptybool ListEmpty(SqList *L) { return (L -> length == 0);}//Find the length of Sqlistint ListLength(SqList *L) { return(L->length);}//Output Sqlistvoid DispList(SqList *L) { for (int i = 0; i < L->length; i++)//Scan Sqlist outputs values for each element printf("%d ", L->data[i]); printf("\n");}//Find the value of a data element in the Sqlistbool GetElem(SqList *L, int i, ElemType &e) { if ( i < 1 || i > L->length ) return false; //When parameters i error return false e = L->data[i - 1]; //Get elements value return true; //When find elements success return true}//When position elements e success on Sqlist, find in order of elements valuesint LocateElem(SqList *L, ElemType e) { int i = 0; while (i < L-> length && L->data[i] != e) i++; //Find elements e if (i >= L->length) //Return 0 when not found return 0; else return i + 1; //return logical sequence number when found}//Insert data elementsbool ListInsert(SqList *&L, int i, ElemType e) { int j; if (i<1 || i > L->length + 1) return false;//Return false when wrong parameters i i--;//Corvert Sqlist logical serical numbers to physical serial numbers for (j = L->length; j > i; j--) //Move the data[i] and rear all elements back one position L->data[j] = L->data[j - 1]; L->data[i] = e;//Insert elements e L->length++;//Sqlist length add 1 return true;}//Delete data elementsbool ListDelete(SqList *&L, int i, ElemType &e) { int j; if (i<1 || i > L->length) return false;//return false when wrong paraments i--; //Convert sequential table logical serial numbers to physical serial numbers e = L->data[i]; for (j = i; j < L->length - 1; j++) //Move the data[i] and rear all elements forward one position L->data[j] = L->data[j + 1]; L->length--;//Sqlist length minus 1 return true;//return true success;}
By Homework 1