1、线性表是用一组连续的存储单元依次存储线性表的数据结构。
2、适用于不经常进行插入删除和查找的情况。
3、综合性能弱于链表。
下面是一些基本操作的实现
//存储结构
#include<iostream>
//顺序存储表示
#define MAXSIZE 100
typedef struct {
int* elem;//基地址
int length;//长度
}Sqlist;
//初始化
int create_List(Sqlist& L) {
L.elem = new int[MAXSIZE];
if (!L.elem)
return 0;
L.length = 0;
return 1;
}
//取值
int get_ELem(Sqlist L, int i, int e) {
std::cout << "确定表长:" << std::endl;
std::cin >> i;
if (i<1 || i>L.length)
return 0;
for (; i < L.length; i++) {
std::cout << "依次输入元素(q to quit):" << std::endl;// << L.elem[i];
std::cin >> e;
e = L.elem[i - 1];
if (e == 'q')
break;
}
return 1;
}
//查找
int get_Locate(Sqlist L, int i, int e) {
std::cout << "确定元素值:" << std::endl;
std::cin >> e;
while (e != L.elem[i]) {
i = 0;
i++;
if (i<1 || i>L.length)
std::cout << "位置不合法." << std::endl;
if (L.elem[i] == e)
std::cout << "元素" << e << " 找到,位置为:" << i << std::endl;
}
return 1;
}
//删除 bool delete_Elem(Sqlist L) { int i; if ((i < 1) || (i > L.length)) return false; for (int j =i< i; j < L.length - 1; ++j) L.elem[j - 1] = L.elem[j]; --L.length; return true; } //插入 int insert_ELem(Sqlist L, int i, int e) { if ((i < 1) || (i > L.length)) return false; if (L.length == MAXSIZE) return false; for (int j = L.length-1 ; j>=i-1; j--) L.elem[j +1] = e; ++L.length; return true; }