数据结构—线性表
C语言实现,仅供参考
/*
**title:顺序表
*/
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef int Elemtype; //自定义int类型
typedef struct seqList
{
int n; //线性表的长度
int maxLength; //最大长度
Elemtype *element; //element域
}SeqList;//顺序表类型名
void Init(SeqList *L, int mSize); //初始化运算
void Output(SeqList *L); //输出运算
Elemtype Find(SeqList *L, int i); //查找运算
void Insert(SeqList *L, int i, Elemtype x); //插入运算
void Delete(SeqList *L, int i); //删除运算
Elemtype IsEmpty(SeqList *L); //判空运算
Elemtype IsFull(SeqList *L); //判满运算
void Destory(SeqList *L); //撤销运算
int main()
{
int i;
SeqList list;
Init(&list, 100);
for (i = 0; i<10; i++)
if (!IsFull(&list))
Insert(&list, i - 1, i);
Output(&list);
if (!IsEmpty(&list))
Delete(&list, 0);
Output(&list);
printf("%d\n", Find(&list, 4));
Destory(&list);
system("pause");
return 0;
}
void Init(SeqList *L, int mSize)
{
L->maxLength = mSize;
L->n = 0;
L->element = (Elemtype *)malloc(sizeof(Elemtype)*mSize); //动态生成一位数组空间
}
void Output(SeqList *L)
{
int i;
for (i = 0; i < L->n; i++)
{
printf("%d", L->element[i]);
}
printf("\n");
}
Elemtype Find(SeqList *L, int i)
{
if (i<0 || i>L->n - 1) //判断元素下标i是否越界
return NULL;
return *(L->element + 1); //返回element[i]的值
}
void Insert(SeqList *L, int i, Elemtype x)
{
int j;
if (i<-1 || i>L->n - 1) //判断元素下标i是否越界
return;
if (L->n == L->maxLength) //判断顺序表空间是否已满
return;
for (j = L->n; j>i; j--) //从后往前逐个后移元素
L->element[j + 1] = L->element[j];
L->element[i + 1] = x; //将新元素的下标放在i+1的位置上
L->n++;
}
void Delete(SeqList *L, int i)
{
int j;
if (i<-1 || i>L->n - 1) //判断元素下标i是否越界
return;
if (!L->n) //判断顺序表空间是否为空
return;
for (j = i + 1; j<L->n; j++)
L->element[j - 1] = L->element[j]; //从前往后逐个后移元素
L->n--; //表长减一
}
Elemtype IsEmpty(SeqList *L)
{
return L->n == 0;
}
Elemtype IsFull(SeqList *L)
{
return L->n == L->maxLength;
}
void Destory(SeqList *L)
{
L->n = 0;
L->maxLength = 0;
free(L->element);
}
好了,看到这里基本上这章就结束啦。如果您觉得这期内容对你有帮助的话,欢迎点赞,评论,收藏,谢谢啦。
小伙伴们,强烈安利一波👇:
推荐一款轻便实用的Chrome插件(限时免费下载,赠去广告特权)