线性表顺序存储结构_____c/c++(简易版)适合初学者!

前言
*初学者一定要一行一行看!!!!,我相信你会学会的。
ok,上源码
如果哪里有错或者哪里不懂欢迎留言,我每天都在!

#include <iostream>
using namespace std;
#define maxsize 20  //自定以宏定义maxsize=20 他是一个常量
#define ok 1 //同上
#define error 0 //同上
typedef int Elemtype;	//人话:定义Elemtype它是整型可以拿他当int用
class list {
	public:
		int data[maxsize];
		int length; //当前长度
};
//查询操作
int getElem(list l,int i,Elemtype* e) {//格式:(链表长度L,获取位置i,获取元素的类型+变量名)
	if (l.length = 0 || i<1 || i>l.length) {
		return error;
	}
	*e = l.data[i - 1];
	return ok;
}
//插入操作
int insert(list* L,int i,Elemtype e) {//e为要插入数据 可根据需要定义类型
	int k;
	if (L->length == maxsize) {//顺序线性表已经满了
		return error;
	}
	if (i<1 || i>L->length + 1) {//i不在线性表的长度范围内
		return error;
	}
	if (i <= L->length) {//符合要求
		for (k = L->length - 1; k >= i - 1;k--) {
			L->data[k+ 1] = L->data[k];
		}
	}	
	L->data[i - 1] = e;//将要插入的元素加进去
	L->length++;
}
//删除操作
int dele(list* L, int i,Elemtype* e) {
	int t;
	if (i < 1 || i > L->length)
		return error;
	*e = L->data[i-1];
	if (i <L->length) {
		for (t = i; t <L->length ; t++) {
			L->data[t - 1] = L->data[t];
		}
	}
	L->length--;
	return ok;
}
int main() {
	list p;
	p = { {1,2,3,4,5},10 };//为顺序表初始化数据(其中{1,2,3,4,5}就是顺序表里的数据,10代表他的当前长度)
	cout << "遍历初始数据***********" << endl;
	for (int j = 0; j < 5; j++) {
		cout << p.data[j] << ",";
	}
	cout << endl << endl;
	//删除表中第二个位置的数
	cout << "删除位置为2后的结果:";
	dele(&p,2,&p.data[2]);
	for (int j = 0; j < 4; j++) {
		cout << p.data[j] << ",";
	}
	cout << endl << endl;
	insert(&p, 3, 9);
	cout << "在位置3插入数据后的结果:";
	//遍历(人话:把数组里所有数都打印出来)
	for (int i = 0; i < 5; i++) {
		cout << p.data[i]<<",";
	}
	cout << endl << endl;
}
//优点:1.无需为表中元素之间的逻辑关系而增加额外存储空间
//		2.可以快速存取表中任意位置的元素
//缺点:
//		1.插入和删除操作需移动大量元素
//		2.当线性表长度变化较大时,难以确定存储空间容量
//		3.容易造成存储空间的碎片。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值