seqlist.h文件:
#pragma once
#include<stddef.h>
#define SeqListMaxSize 1000
typedef int SeqType;
typedef struct SeqList {
SeqType data[SeqListMaxSize];
size_t size;
} SeqList;
void SeqListInit(SeqList* seq);//初始化
void SeqListPushBack(SeqList* seq, SeqType value);//尾插
void SeqListPopBack(SeqList* seq);//尾删
void SeqListPushFront(SeqList* seq, SeqType value);//头插
void SeqListPopFront(SeqList* seq);//头删
SeqType SeqListGet(SeqList* seq, size_t pos);//获取指定位置元素
void SeqlistModefy(SeqList* seq, size_t pos, SeqType value);//修改指定位置的值
size_t SeqlistFind(SeqList* seq, SeqType x);//查找指定元素的下标
void SeqListInsert(SeqList* seq, size_t pos,SeqType value);//向指定位置插入元素
void SeqListprintf(SeqList* seq);//打印
seqlist.c文件:
#include"seqlist.h"
#include<assert.h>
//1. 初始化
//2. 尾插
//3. 尾删
//4. 头插
//5. 头删
//6. 读任意位置元素
//7. 修改任意位置元素
//8. 查找指定元素值的下标
//9. 在任意位置插入元素
void SeqListInit(SeqList* seq)
{
assert(seq);
seq->size = 0;
return;
}
void SeqListPushBack(SeqList* seq, SeqType value)
{
assert(seq);
if (seq->size >= SeqListMaxSize)
{
return;
}
seq->data[seq->size] = value;
++seq->size;
}
void SeqListPopBack(SeqList* seq)
{
assert(seq);
if (seq->size >= SeqListMaxSize)
{
return;
}
--seq->size;
}
void SeqListPushFront(SeqList* seq, SeqType value)
{
assert(seq);
if (seq->size >= SeqListMaxSize)
{
return;
}
size_t i = seq->size;
for (; i >0; i--)
{
seq->data[i] = seq->data[i - 1];
}
seq->data[0] = value;
++seq->size;
}
void SeqListPopFront(SeqList* seq)
{
assert(seq);
if (seq->size >= SeqListMaxSize)
{
return;
}
size_t i = 0;
for (; i < seq->size-1; i++)
{
seq->data[i] = seq->data[i + 1];
}
--seq->size;
}
SeqType SeqListGet(SeqList* seq, size_t pos)//获取指定位置元素
{
assert(seq);
assert(pos < seq->size);
return seq->data[pos];
printf(seq->data[pos]);
}
void SeqlistModefy(SeqList* seq, size_t pos, SeqType value)//修改指定位置的值
{
assert(seq);
assert(pos < seq->size);
seq->data[pos] = value;
}
size_t SeqlistFind(SeqList* seq, SeqType x)//查找指定元素的下标
{
assert(seq);
size_t i = 0;
for (; i < seq->size; i++)
{
if (seq->data[i] == x)
{
return i;
}
else
return (size_t)-1;
}
}
void SeqListInsert(SeqList* seq, size_t pos, SeqType value)//向指定位置插入元素
{
assert(seq);
if (seq->size >= SeqListMaxSize)
{
return;
}
size_t i = seq->size;
while (i > pos)
{
seq->data[i] = seq->data[i - 1];
}
seq->data[pos] = value;
++seq->size;
}
void SeqListprintf(SeqList* seq)
{
size_t i = 0;
for (; i < seq->size; i++)
{
printf("%d ", seq->data[i]);
}
}
测试代码:
#include"seqlist.h"
#include<stdio.h>
SeqList seq;
void SeqListInittest()
{
SeqListInit(&seq);
}
void SeqListpushbacktest()
{
SeqListPushBack(&seq, 1);
SeqListPushBack(&seq, 2);
}
void SeqListpopback()
{
SeqListPopBack(&seq);
}
void pushfronttest()
{
SeqListPushFront(&seq, 2);
SeqListPushFront(&seq, 3);
}
void seqListgettest()
{
SeqType res = SeqListGet(&seq, 0);
printf("%d ", res);
}
void seqlistmodefy()
{
SeqlistModefy(&seq, 1, 4);
}
void seqlistfind()
{
SeqType ret=SeqlistFind(&seq, 3);
printf("%d ", ret);
}
void seqListinsert()
{
SeqListInsert(&seq, 3, 5);
}
int main()
{
//SeqListInittest();
SeqListpushbacktest();
//SeqListprintf(&seq);
SeqListpopback();
//SeqListprintf(&seq);
pushfronttest();
//SeqListprintf(&seq);
//SeqListPopFront(&seq);
//SeqListprintf(&seq);
//seqListgettest();//3?结果 3
seqlistmodefy();//3 4 1?结果 3 4 1
//seqlistfind();//0? 0
seqListinsert();//3 4 1 5? 结果3 4 1 5
SeqListprintf(&seq);
system("pause");
return 0;
}