【数据结构】C语言-线性表基本运算的实现

数据结构—线性表

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插件(限时免费下载,赠去广告特权)

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值