SqList.h
#include<stdio.h>
#include<stdbool.h>
#define MaxSize 10
//顺序表的实现--静态分配
typedef struct SqList
{
int data[MaxSize];
int size;
}SqList;
void SqListInit(SqList* ps);
void SqListPrint(SqList s);
void SqListInsert(SqList* s,int i,int e);
bool SqListFull(SqList s);
void SqListDelete(SqList* ps,int i,int* e);
bool SqListEmpty(SqList s);
int SqListSearch(SqList s, int e);
.
.
.
SqList.c
#pragma once
#include"SqList.h"
void SqListInit(SqList* ps)
{
for (int i = 0; i < MaxSize; ++i)
{
ps->data[i] = 0;
}
ps->size = 0;
}
void SqListPrint(SqList s)
{
for (int i = 0; i < s.size ; ++i)
printf(" %d ", s.data[i] );
printf("\n");
}
bool SqListFull(SqList s)
{
return s.size >= MaxSize;
}
bool SqListEmpty(SqList s)
{
return s.size == 0;
}
void SqListInsert(SqList* ps, int i, int e)
{
//判断插入的位置是否合法
if (i < 1 || i > ps->size + 1)
return;
if (SqListFull == 1)
return;
int cur=ps->size;
//位移
while (cur > i)
{
ps->data[cur] = ps->data[cur - 1];
cur--;
}
//插入
ps->data[i-1] = e;
ps->size++;
}
void SqListDelete(SqList* ps, int i, int* e)
{
if (i < 1 || i >= ps->size)
return;
if (SqListEmpty == 1)
return;
int cur = i; //cur为工作指针
*e = ps->data[i - 1];
while (cur < ps->size)
{
ps->data[cur] = ps->data[cur + 1];
cur++;
}
ps->size--;
}
int SqListSearch(SqList s, int e)
{
if (SqListEmpty == 1)
return -1;
int cur = 0;
for (; cur < s.size; cur++)
{
if (s.data[cur] == e)
return cur + 1;
}
return -1;
}
.
.
.
test.c
#include"SqList.h"
void TestSqList()
{
SqList s;
int e = 0;
SqListInit(&s);
SqListPrint(s);
//在第一个位置插入1
SqListInsert(&s, 1, 6);
SqListInsert(&s, 2, 0);
SqListInsert(&s, 3, 2);
SqListPrint(s);
//删除第1个的值,并把值赋给e
SqListDelete(&s, 1,&e);
SqListPrint(s);
printf(" e=%d", e);
printf("\n");
//找到第一个元素值为6的元素,并返回其位序
int pos=SqListSearch(s,999);
printf("位序为%d", pos);
}
int main()
{
TestSqList();
return 0;
}