数据结构线性表顺序存储结构

在这里插入图片描述顺序存储结构简图

#include"iostream"
using namespace std;

#define MAXSIZE 50
typedef int ElemType;
typedef int status;
typedef struct//定义顺序表结构体
{
	int length;//表当前长度
	ElemType data[MAXSIZE];
}SeqList;
void display_Elem(SeqList* L)//输出表中元素
{
	int j;
	for (j = 1; j <= L->length; j++)//输出表中元素
	{
		cout << L->data[j - 1];
		cout << endl;
	}

}
void CreateList(SeqList* L)//实现表的赋值
{
	int i;
	cout << "请输入元素个数" << endl;
	cin >> L->length;
	cout << "请输入元素的值" << endl;
	for(i = 1; i <= L->length; i++ )
	{
	cin>>L->data[i - 1];
	}
}
status Get_Elem(SeqList* L, int i, ElemType* e);//把表中i位置的的元素传给e
status Insert_Elem(SeqList* L, int i, ElemType* e);//表中ii位置插入e
status delete_Elem(SeqList* L, int i, ElemType* e);删出表内i位置元素存在 e里
int main()
{
	int j = 1;
	SeqList list_one;//创建一个表对象
	CreateList(&list_one);//是不是指针传递不太明白?
	
	ElemType e;//测试得到表中i位置的元素
	Get_Elem(&list_one, 4, &e);
	cout << e << endl;

	ElemType e1;//测试向表中i位置插入元素
	int insert_loc;
	cout << "请输入你需要往表中插入的元素" << endl;
	cin >> e1;
	cout << "请输入你需要往表中插入的元素位置" << endl;
	cin >> insert_loc;
	Insert_Elem(&list_one, insert_loc-1, &e1);
	display_Elem(&list_one);//输出表中元素
	
	ElemType e2;//测试删除表中i位置元素
	int delete_loc;
	cout << "请输入你需要删除的元素的位置" << endl;
	cin >> delete_loc;
	cout << endl;
	delete_Elem(&list_one, delete_loc, &e2);
	display_Elem(&list_one);//输出表中元素*/


}
 
status Get_Elem(SeqList* L, int i, ElemType* e)//把表中i位置的的元素传给e
{
	
	if(i<1 || i>L->length || L->length == 0)
	{
		return 0;
	}
	*e = L->data[i - 1];
	return 1;
}
status Insert_Elem(SeqList* L, int i, ElemType* e)//表中i位置插入e
{
	int j;
	if (i<1 || i>L->length || L->length == 0)//抛出异常
	{
		return 0;
	}
	for (j = 1; j <= (L->length - i + 1); j++)
	{
		L->data[L->length + 2 - j - 1] = L->data[L->length + 1 - j - 1];	
	}
	L->data[i] = *e;
	L->length += 1;
}
status delete_Elem(SeqList* L, int i, ElemType* e)//删出表内i位置元素存在 e里
{
	int k = i;
	if (L->length == 0)//空表抛出异常
	{
		return 0;
	}
	if (i<1 || i>L->length)//输入位序有错
	{
		return 0;
	}
	for (k = i;k< L->length;k++)
	{
		L->data[k - 1] = L->data[k];
	}
	*e = L->data[i - 1];
	L->length--;//表长减1
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值