Seqlist1.h头文件
#pragma once
#include <stddef.h>
#define SeqListMaxSize 1000
typedef char SeqListType;
typedef struct SeqList{
SeqListType data[SeqListMaxSize];
size_t size;
}SeqList;
void SeqListInit(SeqList* seqlist);
void SeqListPushBack(SeqList* seqlist,SeqListType value);
void SeqListPopBack(SeqList* seqlist);
void SeqListPushFront(SeqList* seqlist,SeqListType value);
void SeqListPopFront(SeqList*seqlist);
void SeqListInsert(SeqList* seqlist, size_t pos,SeqListType value);
void SeqListErase(SeqList* seqllist,size_t pos);
seqlist1.c
#include"Seqlist1.h"
void SeqListInit(SeqList* seqlist){
if(seqlist == NULL){
return;
}
seqlist->size = 0;
}
void SeqListPushBack(SeqList*seqlist, SeqListType value){
if(seqlist == NULL){
return;
}
if(seqlist->size >=SeqListMaxSize){
return;
}
seqlist->data[seqlist->size] = value;
++seqlist->size;
return;
}
void SeqListPopBack(SeqList*seqlist){
if(seqlist == NULL){
return;
}
if(seqlist->size == 0){
return;
}
--seqlist->size;
return;
}
void SeqListPushFront(SeqList* seqlist,SeqListType value){
if(seqlist == NULL){
return;
}
if(seqlist->size >= SeqListMaxSize){
return;
}
++seqlist->size;
size_t i = seqlist->size - 1;
for(;i>0;--i){
seqlist->data[i] = seqlist->data[i - 1];
}
seqlist->data[0]=value;
return;
}
void SeqListPopFront(SeqList* seqlist){
if(seqlist == NULL){
return;
}
if(seqlist->size == 0){
return;
}
size_t i = 0;
for(;i<seqlist->size - 1;++i){
seqlist->data[i] = seqlist->data[i+1];
}
--seqlist->size;
return;
}
void SeqListInsert(SeqList* seqlist, size_t pos,SeqListType value){
if(seqlist == NULL){
return;
}
if(pos > seqlist->size){
return;
}
if(seqlist->size >= SeqListMaxSize){
return;
}
if(pos == 0){
SeqListPushFront(seqlist,value);
return;
}
++seqlist->size;
size_t i = seqlist->size -1;
for(;i - 1 >= pos;--i){
seqlist->data[i] = seqlist->data[i-1];
}
seqlist->data[pos] = value;
return;
}
void SeqListErase(SeqList* seqlist,size_t pos){
if(seqlist == NULL){
return;
}
if(seqlist->size == 0){
return;
}
if(pos >= seqlist->size){
return;
}
size_t i = pos;
for(;i < seqlist->size-1;++i){
seqlist->data[i] = seqlist->data[i + 1];
}
--seqlist->size;
return;
}
//laaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
#include<stdio.h>
#define TEST_HEADER printf("\n====================%s====================\n",__FUNCTION__);
void SeqListPrintChar(SeqList* seqlist,const char* msg){
if(seqlist == NULL){
printf("error");
}
printf("[%s]\n",msg);
size_t i = 0;
for(;i<seqlist->size;++i){
printf("[%c]",seqlist->data[i]);
}
printf("\n");
}
void TestInit(){
TEST_HEADER;
SeqList seqlist;
SeqListInit(&seqlist);
printf("seqlist.size expect 0,actual %lu\n",seqlist.size);
}
void TestPushBack(){
TEST_HEADER;
SeqList seqlist;
SeqListInit(&seqlist);
SeqListPushBack(&seqlist,'a');
SeqListPushBack(&seqlist,'f');
SeqListPushBack(&seqlist,'s');
SeqListPushBack(&seqlist,'g');
SeqListPrintChar(&seqlist,"The tail inserts four elements.");
}
void TestPopBack(){
TEST_HEADER;
SeqList seqlist;
SeqListInit(&seqlist);
SeqListPopBack(&seqlist);
SeqListPrintChar(&seqlist,"dui kongshunxubiao weishan");
SeqListPushBack(&seqlist,'a');
SeqListPushBack(&seqlist,'f');
SeqListPushBack(&seqlist,'s');
SeqListPushBack(&seqlist,'g');
SeqListPopBack(&seqlist);
SeqListPopBack(&seqlist);
SeqListPrintChar(&seqlist,"The tail removes two elements");
}
void TestPushFront(){
TEST_HEADER;
SeqList seqlist;
SeqListInit(&seqlist);
SeqListPushFront(&seqlist,'a');
SeqListPushFront(&seqlist,'b');
SeqListPushFront(&seqlist,'c');
SeqListPushFront(&seqlist,'d');
SeqListPrintChar(&seqlist,"The head inserts four elements");
}
void TestPopFront(){
TEST_HEADER;
SeqList seqlist;
SeqListInit(&seqlist);
SeqListPopFront(&seqlist);
SeqListPrintChar(&seqlist,"duikongshunxubiaotoushan");
SeqListPushFront(&seqlist,'a');
SeqListPushFront(&seqlist,'b');
SeqListPushFront(&seqlist,'c');
SeqListPopFront(&seqlist);
SeqListPrintChar(&seqlist,"The header deletes two elements.");
}
void TestInsert(){
TEST_HEADER;
SeqList seqlist;
SeqListInit(&seqlist);
SeqListPushBack(&seqlist,'a');
SeqListPushBack(&seqlist,'b');
SeqListPushBack(&seqlist,'c');
SeqListPushBack(&seqlist,'d');
SeqListInsert(&seqlist,0,'l');
SeqListPrintChar(&seqlist,"0->l");
SeqListInsert(&seqlist,2,'y');
SeqListPrintChar(&seqlist,"2->y");
}
void TestErase(){
TEST_HEADER;
SeqList seqlist;
SeqListInit(&seqlist);
SeqListPushBack(&seqlist,'a');
SeqListPushBack(&seqlist,'b');
SeqListPushBack(&seqlist,'c');
SeqListPushBack(&seqlist,'d');
SeqListErase(&seqlist,2);
SeqListPrintChar(&seqlist,"delete 2");
}
int main(){
TestInit();
TestPushBack();
TestPopBack();
TestPushFront();
TestPopFront();
TestInsert();
TestErase();
return 0;
}