定长线性表
程序员文章站
2022-03-23 09:19:12
...
线性表
一 介绍
- 最常用且最简单的一种数据结构。
- 在复杂的线性表中,一个元素可以有若干个数据项组成,把数据元素成为记录。含有大量记录的线性表叫做文件。
- 线性表中元素必定具有相同的特性,属同一对象。 线性表中元素的个数n(n>=0) 定义线性表的长度,n=0 称为空表。
线性表分为顺序表和链表,两者的区别就是:顺序表在逻辑上相邻,在物理上也相邻。而链表是在逻辑上相邻,物理上不一定相邻。顺序表又分为定长顺序表和不定长顺序表,我们今天来说定长顺序表,定长顺序表,顾名思义,就是顺序表的长度一定,即存放的数据个数有限。
顺序表,定长顺序表
即构造一个结构体,它的成员为elem数组和length变量。
struct A
{
int elem[10];//存放数据的内存
int length;//存放数据的有效个数
};
二,顺序表的操作
1.定义
typedef struct SeqList
{
int elem[NUM];//存放数据的内存
int length;//存放数据的有效个数
}SeqList,*PSeqList;
2.操作
1)初始化
void InitSeqList(PSeqList ps)
{
assert(ps != NULL);
if (ps == NULL)
{
return;
}
ps->length = 0;
}
2)插入
bool Insert(PSeqList ps, int pos, int val)
{
if (ps == NULL || pos < 0 || pos > ps->length || IsFull(ps));
{
return false;
}for (int i = ps->length - 1; i >= pos; i--)
{
ps->elem[i + 1] = ps->elem[i];
}
ps->elem[pos] = val;
ps->length++;
return true;
}
3)判空
bool IsEmpty(PSeqList ps)
{
return ps->length == 0;
}
4)输出参数
bool Delete(PSeqList ps, int pos, int* rtval)
{
if (pos < 0 || pos >= ps->length)
{
return false;
}
if (rtval != NULL)
{
*rtval = ps->elem[pos];
}
for (int i = pos; i < ps->length - 1; i++)
{
ps->elem[i] = ps->elem[i + 1];
}
ps->length--;
return true;
}
5)获取有效长度
int GetLength(PSeqList ps)
{
return ps -> length;
}
int mian()
{
return 0;
}
6)打印函数
void Show(PSeqList ps)
{
for (int i = 0; i < ps->length; i++)
{
printf("%d", ps->elem[i]);
}
printf("\n");
}
7)销毁函数
void Destroy(PSeqList ps)
{
Clear(ps);
}
上一篇: vector的常见用法
下一篇: 数据结构之树(C语言实现)