Header file SeqList.h
#ifndef __seqlist_h__#define __SEQLIST_H__#include <stdio.h>#include <string.h>#include <assert.h>#define Max_sizetypedef intDataType;typedef unsigned intsize_t;typedef structseqlist{DataTypeArray[Max_size]; size_t size;} Seqlist, *pseqlist;//Initialization Order tablevoidInitseqlist (Pseqlist seqlist);//Sequential table end interpolation//Design function prototypes//Parameter detection//Boundary condition Considerations//Logical Operation//tail plugvoidPushback (pseqlist pseqlist, DataType data);//Tail DeletevoidPopback (Pseqlist pseqlist);//Print order tablevoidPrintseqlist (Pseqlist pseqlist);//Head plugvoidPushfront (pseqlist pseqlist, DataType data);//Head DeletevoidPopfront (Pseqlist pseqlist);//Arbitrary position insertionvoidInsert (pseqlist pseqlist, size_t pos, DataType data);//Find the element data in the order tableintFind (pseqlist pseqlist, DataType data);//delete elements on POS position in order tablevoidErase (pseqlist pseqlist, size_t POS);//Remove elements from the order table datavoidRemove (pseqlist pseqlist, DataType data);//Remove all elements from the order table datavoidRemoveAll (pseqlist pseqlist, DataType data);#endif
Implement function seqlist.c
#include "SeqList.h"voidInitseqlist (Pseqlist seqlist)//Initialization Order table{memset(seqlist->Array,0, max_size*sizeof(DataType)); Seqlist->size =0;}//Print order tablevoidPrintseqlist (Pseqlist pseqlist) {size_t i =0;if(Pseqlist->size = =0) {printf("Linear table is empty, printing ends \ n");return; } for(i =0; I < pseqlist->size; i++) {printf("%d", pseqlist->Array[i]); }printf("\ n");}voidPushback (pseqlist pseqlist, DataType data)//Insert from Tail{assert (pseqlist);//Determine if the pointer is empty if((pseqlist->size) >= max_size) {printf("The linear table is full and cannot continue inserting \ n");return; } pseqlist->Array[Pseqlist->size] = data; pseqlist->size++;}voidPopback (Pseqlist pseqlist)//Remove from tail{assert (pseqlist);if(Pseqlist->size = =0) {printf("linear table is empty \ n");return; } pseqlist->size--;printf("Delete succeeded \ n");}voidPushfront (pseqlist pseqlist, DataType data)//Insert from header{size_t i = pseqlist->size; ASSERT (Pseqlist);//Determine if the pointer is empty if((pseqlist->size) >= max_size) {printf("The linear table is full and cannot continue inserting \ n");return; } while(i) {pseqlist->Array[I] = pseqlist->Array[I1]; i--; } pseqlist->Array[0] = data;printf("Insert complete \ n"); pseqlist->size++;}voidPopfront (Pseqlist pseqlist)//Delete the front one{size_t i =0; ASSERT (Pseqlist);//Determine if the pointer is empty if(Pseqlist->size = =0) {printf("linear table is empty \ n");return; } for(i =0; I < pseqlist->size-1; i++) {pseqlist->Array[I] = pseqlist->Array[i +1]; } pseqlist->size--;printf("Delete complete \ n");}intFind (pseqlist pseqlist, DataType data)//Find an element in a sequential table{size_t i =0; ASSERT (Pseqlist);//Determine if the pointer is empty if(Pseqlist->size = =0) {printf("linear table is empty \ n");return-1; } for(i =0; I < pseqlist->size-1; i++) {if(pseqlist->Array[I] = = data) {returnI } }return-1;}voidInsert (pseqlist pseqlist, size_t pos, DataType data)//Insert element at any location{size_t i = pseqlist->size; ASSERT (Pseqlist);//Determine if the pointer is empty if((pseqlist->size) >= max_size) {printf("The linear table is full and cannot continue inserting \ n");return; }if(Pos > Pseqlist->size) {printf("insertion position not allowed \ n");return; } for(i = pseqlist->size; i >pos; i--) {pseqlist->Array[I] = pseqlist->ArrayI1]; } pseqlist->Array[POS] = data; pseqlist->size++;printf("Add complete \ n");}//delete elements on POS position in order tablevoidErase (pseqlist pseqlist, size_t pos) {size_t i = pos; ASSERT (Pseqlist);//Determine if the pointer is empty if(Pseqlist->size = =0) {printf("linear table is empty \ n");return; }if(Pos > Pseqlist->size) {printf("Delete location is incorrect \ n");return; } for(i = pos; i < pseqlist->size-1; i++) {pseqlist->Array[I] = pseqlist->Array[i +1]; } pseqlist->size--;printf("Delete complete \ n");}voidRemoveAll (pseqlist pseqlist, DataType data) {size_t i =0; ASSERT (Pseqlist);//Determine if the pointer is empty if(Pseqlist->size = =0) {printf("linear table is empty \ n");return; } for(i =0; I < pseqlist->size; i++) {if(pseqlist->Array[I] = = data) {size_t j = i; while(j< pseqlist->size-1) {pseqlist->Array[j] = pseqlist->Array[J +1]; j + +; } pseqlist->size--;printf("An element has been deleted \ n"); i--; } }printf("Delete complete \ n");}voidRemove (pseqlist pseqlist, DataType data) {size_t i =0; ASSERT (Pseqlist);//Determine if the pointer is emptyi = Find (pseqlist, data);if(I >=0) { while(I < pseqlist->size-1) {pseqlist->Array[I] = pseqlist->Array[i +1]; i++; } pseqlist->size--;printf("Delete complete \ n");return; }Else{printf("The element was not found");return; }}
Test program TEST.C (can be divided into three Tests)
#include "SeqList.h"Static voidTest1 (Pseqlist seqlist) {initseqlist (seqlist); Pushback (Seqlist,1); Pushback (Seqlist,2); Pushback (Seqlist,3); Pushback (Seqlist,4); Printseqlist (seqlist); Popback (seqlist); Printseqlist (seqlist);}Static voidTest2 (Pseqlist seqlist)//Test Pushfront, Printseqlist,popfront and other functions{intRET =0; Initseqlist (seqlist); Pushfront (Seqlist,1); Pushfront (Seqlist,2); Pushfront (Seqlist,3); Pushfront (Seqlist,4); Printseqlist (seqlist); Popfront (seqlist); Popfront (seqlist); Popfront (seqlist); Popfront (seqlist); Popfront (seqlist); Printseqlist (seqlist);}Static voidTest3 (Pseqlist seqlist)//test Insert,erase,remove,removeall function{intRET =0; Initseqlist (seqlist); Pushfront (Seqlist,1);//Add 1 to the headerPushfront (Seqlist,2); Pushfront (Seqlist,3); Pushfront (Seqlist,4); Insert (Seqlist,3,5);//Insert 5 in the position of subscript 3Printseqlist (seqlist); Erase (Seqlist,3);//Remove elements from subscript 3 positionPrintseqlist (seqlist); Insert (Seqlist,3,2); Insert (Seqlist,3,2); Printseqlist (seqlist); Remove (Seqlist,2);//Delete first 2Printseqlist (seqlist); RemoveAll (Seqlist,2);//Remove all 2Printseqlist (seqlist);}Static voidTest4 (Pseqlist seqlist)//test find function{intRET =0; Initseqlist (seqlist); Pushfront (Seqlist,1); Pushfront (Seqlist,2); Pushfront (Seqlist,3); Pushfront (Seqlist,4); ret = Find (seqlist,2); printf"%d", ret);}intMain () {seqlist seqlist;/*test1 (&seqlist); * * /*test2 (&seqlist); * *Test3 (&seqlist);/*test4 (&seqlist); * *System"Pause");return 0;}
Insert, delete, specify position of simple order table, insert delete operation for specified element