#include<assert.h>
#include<stdlib.h>
#pragma once
#define SeqlistArrMax 100
typedef char SeqlistType;
typedef struct Seqlist
{
SeqlistType SeqlistArr[SeqlistArrMax];
size_t size;
}Seqlist;
void SeqlistInit(Seqlist *seqlist);//初始化顺序表
void SeqlistPrint(Seqlist *seqlist, char *c);//打印顺序表
void SeqlistPushEnd(Seqlist *seqlist, SeqlistType value);//尾插
void SeqlistPopEnd(Seqlist *seqlist);//尾删
void SeqlistPushstart(Seqlist *seqlist, SeqlistType value);//头插
void Seqlistpopstart(Seqlist *seqlist);//头删
void SeqlistRead(Seqlist *seqlist, size_t pos);//读取元素信息
void SeqlistSet(Seqlist *seqlist, size_t pos,SeqlistType value);//修改元素信息
void Seqlistsetpos(Seqlist *seqlist,SeqlistType value);//查找元素下标
void SeqlistPushPos(Seqlist *seqlist, size_t pos,SeqlistType value);//任意下标插入元素
#include<stdio.h>
#include"sqlist.h"
#include<assert.h>
//初始化顺序表
void SeqlistInit(Seqlist *seqlist)
{
assert(seqlist);
seqlist->size = 0;
}
//打印顺序表
void SeqlistPrint(Seqlist *seqlist, char *ch)
{
assert(seqlist);
int i = 0;
printf("%s\n", ch);
for (i = 0;i<seqlist->size;i++)
{
printf("下标为%d的元素为%c\n",i, seqlist->SeqlistArr[i]);
}
printf("size=%d\n", seqlist->size);
}
//尾插
void SeqlistPushEnd(Seqlist *seqlist,SeqlistType value)
{
assert(seqlist);
if (seqlist->size >= SeqlistArrMax)
{
printf("顺序表已满!\n");
}
seqlist->SeqlistArr[seqlist->size] = value;
seqlist->size++;
}
//尾删
void SeqlistPopEnd(Seqlist *seqlist)
{
assert(seqlist);
if ("seqlist->size==0")
{
printf("顺序表为空!\n");
return;
}
seqlist->size--;
}
//头插
void SeqlistPushStart(Seqlist *seqlist, SeqlistType *value)
{
assert(seqlist);
if (seqlist->size >= SeqlistArrMax)
{
printf("顺序表已满!\n");
return;
}
int i = seqlist->size;
for (; i > 0; i--)
{
seqlist->SeqlistArr[i + 1] = seqlist->SeqlistArr[i];
}
seqlist->SeqlistArr[0] = value;
seqlist->size++;
}
//头删
void SeqlistPopStart(Seqlist *seqlist)
{
assert(seqlist);
if (seqlist->size == 0)
{
printf("空顺序表!\n");
return;
}
int i = 0;
for (; i < seqlist->size; i++)
{
seqlist->SeqlistArr[i] = seqlist->SeqlistArr[i + 1];
}
seqlist->size--;
}
//读取信息
void SeqlistRead(Seqlist *seqlist, size_t pos)
{
assert(seqlist);
if (pos >= seqlist->size)
{
printf("输入有误!\n");
return;
}
printf("该元素为:%c\n", seqlist->SeqlistArr[pos]);
}
//修改信息
void SeqlistSet(Seqlist *seqlist,size_t pos, SeqlistType value)
{
assert(seqlist);
if (pos >= seqlist->size)
{
printf("输入有误!\n");
return;
}
seqlist->SeqlistArr[pos] = value;
}
//查找下标
void SeqlistSetPos(Seqlist *seqlist, SeqlistType value)
{
assert(seqlist);
int i = 0;
for (; i < seqlist->size;i++)
{
if (seqlist->SeqlistArr[i] = value)
{
printf("元素下标为:%d\n", i);
}
}
printf("没有该元素!\n");
}
//任意位置插入元素
void SeqlistPushPos(Seqlist *seqlist, size_t pos, SeqlistType value)
{
assert(seqlist);
if (pos >= seqlist->size)
{
printf("输入有误!\n");
return;
}
if (seqlist->size >= SeqlistArrMax)
{
printf("顺序表已满!\n");
return;
}
int i = seqlist->size;
for (; i > pos;i--)
{
seqlist->SeqlistArr[i] = seqlist->SeqlistArr[i - 1];
}
seqlist->SeqlistArr[pos] = value;
seqlist->size++;
}
//test code
void TestSeqlistInit()
{
Seqlist seqlist;
SeqlistInit(&seqlist);
SeqlistPrint(&seqlist, "\n***************Init***************");
}
void TestSeqlistPushEnd()
{
Seqlist seqlist;
SeqlistInit(&seqlist);
SeqlistPushEnd(&seqlist, 'a');
SeqlistPushEnd(&seqlist, 'b');
SeqlistPushEnd(&seqlist, 'c');
SeqlistPrint(&seqlist, "**************PushEnd**************");
}
void TestSeqlistPopEnd()
{
Seqlist seqlist;
SeqlistInit(&seqlist);
SeqlistPushEnd(&seqlist, 'a');
SeqlistPushEnd(&seqlist, 'b');
SeqlistPushEnd(&seqlist, 'c');
SeqlistPrint(&seqlist, "**************PopEnd*************");
}
void TestSeqlistPushStart()
{
Seqlist seqlist;
SeqlistInit(&seqlist);
SeqlistPushEnd(&seqlist, 'c');
SeqlistPushEnd(&seqlist, 'd');
SeqlistPushEnd(&seqlist, 'e');
SeqlistPushStart(&seqlist, 'a');
SeqlistPushStart(&seqlist, 'b');
SeqlistPrint(&seqlist, "\n**********PushStart************");
}
void TestSeqlistPopStart()
{
Seqlist seqlist;
SeqlistInit(&seqlist);
SeqlistPushEnd(&seqlist, 'a');
SeqlistPushEnd(&seqlist, 'b');
SeqlistPushEnd(&seqlist, 'c');
SeqlistPopStart(&seqlist, 'a');
SeqlistPopStart(&seqlist, 'b');
SeqlistPrint(&seqlist, "\n********PopStart************");
}
void TestSeqlistRead()
{
Seqlist seqlist;
SeqlistInit(&seqlist);
SeqlistPushEnd(&seqlist, 'a');
SeqlistPushEnd(&seqlist, 'b');
SeqlistPushEnd(&seqlist, 'c');
SeqlistRead(&seqlist, 2);
SeqlistPrint(&seqlist, "\n********Read************");
}
void TestSeqlistSet()
{
Seqlist seqlist;
SeqlistInit(&seqlist);
SeqlistPushEnd(&seqlist, 'a');
SeqlistPushEnd(&seqlist, 'b');
SeqlistPushEnd(&seqlist, 'c');
SeqlistSet(&seqlist, 2,'e');
SeqlistPrint(&seqlist, "\n********Set************");
}
void TestSeqlistSetPos()
{
Seqlist seqlist;
SeqlistInit(&seqlist);
SeqlistPushEnd(&seqlist, 'a');
SeqlistPushEnd(&seqlist, 'b');
SeqlistPushEnd(&seqlist, 'c');
SeqlistSetPos(&seqlist, 'b');
SeqlistPrint(&seqlist, "\n********SetPos************");
}
void TestSeqlistPushPos()
{
Seqlist seqlist;
SeqlistInit(&seqlist);
SeqlistPushEnd(&seqlist, 'a');
SeqlistPushEnd(&seqlist, 'b');
SeqlistPushEnd(&seqlist, 'c');
SeqlistRead(&seqlist, 2,'d');
SeqlistPrint(&seqlist, "\n********PushPos************");
}
int main()
{
TestSeqlistInit();
TestSeqlistPushEnd();
TestSeqlistPopEnd();
TestSeqlistPushStart();
TestSeqlistPopStart();
TestSeqlistRead();
TestSeqlistSet();
TestSeqlistSetPos();
TestSeqlistPushPos();
return 0;
}