#include"SeqList.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 SeqListInsert(SeqList*seqlist,size_t pos,SeqListType value)//对线性表指定位置的元素插入
{
if(seqlist==NULL)
{
return;
}
if(seqlist->size>=SeqListMaxSize)
{
return;
}
if(pos>seqlist->size)
{
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;
}
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;
}
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;
}
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;
}
以下为相应的测试代码
#include<stdio.h>
SeqlistPrintchar(SeqList *seqlist,const char* msg)
{
if(seqlist==NULL)
{
return ;
}
printf("[%s] \n",msg);
size_t i=0;
for(;i<seqlist->size;++i)
{
printf("[%c] ",seqlist->data[i]);
}
}
void SeqListtext()
{SeqList seqlist;
SeqListInit(&seqlist);
printf("seqlist.size expect 0,actural %lu\n",seqlist.size);
}
void TextPushBack()
{
SeqList seqlist;
SeqListInit(&seqlist);
SeqListPushBack(&seqlist,'a');
SeqListPushBack(&seqlist,'b');
SeqListPushBack(&seqlist,'c');
SeqListPushBack(&seqlist,'d');
SeqlistPrintchar(&seqlist,"尾部插入四个元素:");
}
void TextPopback()
{
SeqList seqlist;
SeqListInit(&seqlist);
SeqListPopback(&seqlist);
SeqlistPrintchar(&seqlist,"以下为对空顺序表进行尾删");
SeqListPushBack(&seqlist,'a');
SeqListPushBack(&seqlist,'b');
SeqListPushBack(&seqlist,'c');
SeqListPopback(&seqlist);
SeqlistPrintchar(&seqlist,"以下为对数组进行尾删一个字符的结果");
}
void TextPushFront()
{
SeqList seqlist;
SeqListInit(&seqlist);
SeqListPushFront(&seqlist,'a');
SeqListPushFront(&seqlist,'b');
SeqListPushFront(&seqlist,'c');
SeqListPushFront(&seqlist,'d');
SeqlistPrintchar(&seqlist,"前插四个元素:");
}
void TextPopFront()
{
SeqList seqlist;
SeqListInit(&seqlist);
SeqListPopFront(&seqlist);
SeqlistPrintchar(&seqlist,"以下为对空顺序表前删:");
SeqListPushFront(&seqlist,'a');
SeqListPushFront(&seqlist,'b');
SeqListPushFront(&seqlist,'c');
SeqListPushFront(&seqlist,'d');
SeqListPopFront(&seqlist);
SeqListPopFront(&seqlist);
SeqlistPrintchar(&seqlist,"以下为头删两个元素");
}
void TextInsert()
{
SeqList seqlist;
SeqListInit(&seqlist);
SeqListPushBack(&seqlist,'a');
SeqListPushBack(&seqlist,'b');
SeqListPushBack(&seqlist,'c');
SeqListPushBack(&seqlist,'d');
SeqListInsert(&seqlist,3,'x');
SeqlistPrintchar(&seqlist,"以下为对顺序表第三个位置插入元素x:");
}
void TextErase()
{
SeqList seqlist;
SeqListInit(&seqlist);
SeqListPushBack(&seqlist,'a');
SeqListPushBack(&seqlist,'b');
SeqListPushBack(&seqlist,'c');
SeqListPushBack(&seqlist,'d');
SeqListErase(&seqlist,3);
SeqlistPrintchar(&seqlist,"删除第三个位置的元素:");
}
int main()
{
SeqListtext();
TextPushBack();
printf("\n");
TextPopback();
printf("\n");
TextPushFront();
printf("\n");
TextPopFront();
printf("\n");
TextInsert();
printf("\n");
TextErase();
return 0;
}
对头文件的引用
#pragma once
#include<stddef.h>
#define SeqListMaxSize 100
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*seqlist,size_t pos);