基础数据结构--线性表实现

以下代码是对基础数据结构中的线性表的顺序实现,在VS2012下没问题

#include <stdio.h>

#define MAXLENGTH 20
struct list
{
	int data[MAXLENGTH];
	int length;
};

//增加元素
int insert(list& l, int e, int index)
{
	if(index < 0 || index >= MAXLENGTH || index > l.length)
		return -1;
	else
	{
		int i = l.length -1;
		for(; i >= index; --i)
		{
			l.data[i+1] = l.data[i];
		}
		l.data[index] = e;
		++ l.length;
	}
	return 1;
}

//删除元素
int drop(list& l, int index)
{
	if(l.length == 0 || index < 0 || index >= l.length)
		return -1;
	int i = index;
	for(; i < l.length -1; ++i)
	{
		l.data[i] = l.data[i+1];
	}
	l.data[l.length -1] = '\0';
	-- l.length;
	return 1;
}

//获取元素
int getEle(list l, int index, int& e)
{
	if(l.length == 0 || index < 0 || index >= l.length)
		return -1;
	e = l.data[index];
	return 1;
}
//更改元素
int modify(list& l, int index, int e)
{
	if(l.length == 0 || index < 0 || index >= l.length)
		return -1;
	l.data[index] = e;
	return 1;
}

//获取前驱
int priorEle(list l, int e, int& pre)
{
	int i = 0;
	for(; i < l.length; ++i)
	{
		if(l.data[i] == e)
		{
			if(i > 0)
			{
				pre = l.data[i-1];
				return 1;
			}
		}
	}
	return 0;
}
//获取后继
int next(list l, int e, int &next)
{
	int i = 0;
	for(;i < l.length; ++i)
	{
		if(l.data[i] == e)
		{
			if(i < l.length -1)
			{
				next = l.data[i +1];
				return 1;
			}
		}
	}
	return 0;
}
//打印表
void printList(list l)
{
	int i =0;
	for(i = 0; i < l.length; ++i)
	{
		printf("%d ", l.data[i]);
	}
	printf("\n");
}

int main()
{
	list l;
	l.length =3;
	l.data[0] = 1;
	l.data[1] = 3;
	l.data[2] = 2;

	printList(l);
	insert(l,5,3);
	insert(l, 10, 4);
	printList(l);

	drop(l,3);
	printList(l);

	int e = 0;
	getEle(l, 3, e);
	printf("%d \n",e);

	modify(l,3,20);
	printList(l);

	e = 3;
	int pre = -1;
	priorEle(l,e,pre);
	printf("%d \n", pre);

	int nextI =-1;
	next(l,e,nextI);
	printf("%d \n",nextI);

	//防止命令行自动退出
	getchar();
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值