Insert, delete, specify position of simple order table, insert delete operation for specified element

Source: Internet
Author: User

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

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.