#include <stdio.h>#include <stdlib.h>#include <time.h>#define INIT_SIZE 100#define Per_increment 10typedefstructsqlist{char *Element;IntLength;IntListsize;} SqList;void Initsqlist (SqList *L) {l->element= (char*) malloc (sizeof (sqlist) *Init_size);if (! l->element) Exit (0); L->length=0; L->listsize=Init_size;}void Createsqlist (SqList *L) {CharCwhile ((C=getchar ())! =‘\ n‘) {if (c!=‘‘) {* (l->element+l->length) =C l->length++; } }}Char getelement (SqList L,IntPOS) {return * (l.element+pos-1);}void Insertelement (SqList *l,int POS,CharE) {if (pos<1| | pos>l->length+1) Exit (0);if (l->length>=l->Listsize) {l->element= (char*) realloc (L->element,sizeofChar) * (per_increment+l->Listsize)); L->listsize=l->listsize+Per_increment; }Char *p=l->element+pos-1;char *Qfor (q=l->element+l->length-1;q>=p;--Q) * (q+1) =*Q *p=E l->length++;}Char deleteelement (SqList *l,IntPOS) {if (pos<1| | Pos>l->length) Exit (0);Char *p=l->element+Poschar *Qfor (q=p;q<l->element+l->length;++Q) * (q1) =*Q l->length--;return *P;}void Destroy (SqList *L) {Free (l->Element);}voidPrintsqlist (SqList L) {int i=0;for (; i<l.length;++i) printf ("%c", * (l.element+i));}voidReverseprint (SqList L) {int i=l.length-1;for (; i>-1;--i) printf ("%c", * (l.element+i));}IntMain () {sqlist L;//Test initsqlist for initializing and creating functions (&L); Createsqlist (&L); Printsqlist (L); printf"\ n"); Reverseprint (L); printf"\ n");//Test Add functionint index=0;int num=0; Srand ((unsigned) time (NULL));for (;index<100;index++) {Num=rand ()% (index+1) +1; Insertelement (&l,num,num+‘0‘); } printsqlist (L); printf"\ n"); Reverseprint (L); printf"\n%d", l.length); printf"\ n");// test delete function Index=00for (; Index<50;index++ (L.length); Deleteelement (&l,num);} printsqlist (L); printf ( "\n" ); Reverseprint (L); printf ( "\n%d" ,l.length); return 0
Realization of sequential storage structure of linear table of data structure--c language version