数据结构——顺序表及其基本操作

/************************
author's email:[email protected]
date:2017.12.28
顺序表及其基本操作
************************/

#include 
using namespace std;
#define maxSize 20
typedef struct {
	int data[maxSize];
	int length;
}Sqlist;
void initList(Sqlist &L);//初始化顺序表
int findElem(Sqlist L, int e);//在顺序表中查找值为e的元素
int insertElem(Sqlist &L, int p, int e);//在p后插入e
int deleteElem(Sqlist &L, int p, int &e);//删除下标为p的元素,并将删除的元素赋值给e
int getElem(Sqlist L, int p, int &e);//取出下标为p的元素,并将取出的元素赋值给e
void printElem(Sqlist L);//输出顺序表
void main() {
	Sqlist L;
	initList(L);
	char ch[8] = { 15,46,47,29,19,23,68,79 };
	for (int i = 0; i < 8; ++i) {
		L.data[i] = ch[i];
		++(L.length);
	}
	int e;
	cout << "请输入要查找的元素:";
	cin >> e;
	cout <<"此元素存在于顺序表下标为(下标从0开始)"<> p >> e;
	cout << "若返回-1,则表示插入失败;若返回1,则表示插入成功。插入结果为:" << insertElem(L, p, e) << endl;
	cout << "此时顺序表中的元素为:";
	printElem(L);

	cout << "请输入要删除的元素的下标:";
	cin >> p;
	cout << "若返回-1,则表示删除失败;若返回1,则表示删除成功。删除结果为:" << deleteElem(L, p, e) << endl;
	cout << "删除的元素为:" << e << endl;
	cout << "此时顺序表中的元素为:";
	printElem(L);

	cout << "请输入要取出的元素的下标:";
	cin >> p;
	cout << "若返回-1,则表示失败;若返回1,则表示成功。结果为:" << getElem(L, p, e) << endl;
	cout << "取出的元素为:" << e<L.length-1||L.length==maxSize) {
		return -1;
	}
	else{
		int i;
		for (i = L.length - 1; i >= p; --i) {
			L.data[i + 1] = L.data[i];
		}
		L.data[p] = e;
		++(L.length);
		return 1;
	}
}
//删除下标为p的元素,并将删除的元素赋值给e
int deleteElem(Sqlist &L, int p, int &e) {//删除顺序表中下标为p的元素,并将删除的元素赋值给e。
	if (L.length == 0) {
		return -1;
	}
	else {
		e = L.data[p];
		for (int i = p; i < L.length; ++i) {
			L.data[i] = L.data[i + 1];
		}
		--(L.length);
		return 1;
	}
}
//取出下标为p的元素,并将取出的元素赋值给e
int getElem(Sqlist L, int p, int &e) {
	if (L.length == 0)
		return -1;
	else {
		if (p<0 || p>L.length - 1)
			return -1;
		e = L.data[p];
		return 1;
	}
}
//输出顺序表
void printElem(Sqlist L) {
	for (int i = 0; i < L.length; ++i)
		cout << L.data[i] << ' ';
	cout << endl;
}
以上如有错误请指出,大家共同学习。

你可能感兴趣的:(数据结构,数据结构,顺序表)