数据结构基本操作集(一)顺序表

数据结构基本操作集的C语言实现(一)

(一) 顺序表

1.常用操作

(1)、顺序表的结构体定义

//顺序表的结构体定义
typedef struct 
{
	int data[MAXNUM];
	int last=-1;//记录最后一个节点的位置。如果last=-1,表是空表
}SeqList;
定义方法:SeqList L;
///建立新表方法
for(int i=0;i<MAXSIZE;i++)
{
	int d;
	scanf("%d",&d);
	L->data[i]=d;
	L->last++;
}

(2)顺序表的初始化

SeqList* Init_SeqList()
{
	SeqList *p;
	p=(SeqList*)malloc(sizeof(SeqList));
	if(p==NULL)//判断空间申请是否成功
		return NULL;
	return p;
]

(3)、顺序表的长度

int Lenth_SeqList(SeqList *L)
{
	return L->last+1;
}

(4)、取表中第i个元素

//由于表中元素是从第0个元素开始存储,故应取表中存储序号为i-1的元素。
int Get_List(SeqList *L,int post)//post是是取第post个元素
{
	if(L->last==-1)//防止空列表
	{
		printf("empty List!");
		exit(0);
	}
	else if(post>L->last)//防止数组越界。
	{
		printf("out of limit");
		exit(0);
	}
	reutrn L->data[post-1];
}

(5)、按值查找

int Locate_SeqList(Seqlist *L,int d)
{
	if(L->list==-1)
	{
		printf("empty List!");
		exit(0);
	}
	for(int i=0;i<=L->list;i++)
	{
		if(L->data[i]==d)
		{
			return i+1;
		}
	}
	printf("not find this data");
	exit(0);
}

(5)、插入操作
在第i个元素后插入(插入到data[i])

SeqList* Init_SeqL(SeqList* L,int post,int d)
{
	if(post>=MAXSIZE)
	{
		printf("越界")return L;
	}
	if(post==L->last)
	{
		last++;
		L->data[last]=d;
		return L;
	}
	else
	{
		for(int i=L->last;i<=post;i--)
		{
			L->data[i+1]=L->data[i];
		}
		L->data[post]=d;
		L->last++;
	}
	return L;
}

(6)、删除值为i的元素

SeqList* deletei(SeqList L,int i)
{
	if(L->list==-1)
	{
		printf("NULL LIST");
		return L;
	}
	int post=int Locate_SeqList(L,i);
	for(int j=post;j<L->last;j++)
	{
		L->data[j]=L->data[j+1];
	}
	L->last--;
	return L;
}//(按位置删除同理)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值