数据结构——C/C++实现顺序表

#include <iostream>
#include <stdio.h> 
#include <stdlib.h>
using namespace std; 
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 100
typedef int Status;//定义返回状态类型为int 
typedef char ElemType;//定义元素类型为char 
//定义顺序表 
typedef struct{
	ElemType data[MAXSIZE];//定义数组长度 
	int length;//长度 
}SqList;

//初始化线性表
Status InitSqList(SqList *sq){
	cout << "Please input the length of the order sheet:"<<endl;
	cin >> sq->length;
	if(sq->length<1){
		return ERROR;
	}
	cout << "Please input elements into the sheet:"<<endl;
	int i = 0;
	//初始化内容 
	for(i=0;i<sq->length;i++){
		cin >> sq->data[i];
	}
	return OK;
} 

//输出线性表
void OutputSqList(SqList sq){
	cout << "The order sheet is :"<<endl; 
	int i = 0;
	for(i = 0;i<sq.length;i++){
		cout<<sq.data[i]<<" ";
	}
	cout << endl;
} 

//获取元素
Status GetElem(SqList sq){
	int i = 0;
	cout << "Please input the index of the Retrieved element:"<<endl;
	cin >> i;
	//如果线性表长度为0,获取的位置不在范围内,获取失败 
	if(sq.length==0 || i>sq.length || i<1){
		return ERROR;
	}
	int index = i-1;//获得位置与索引转换
	cout << "The element is " << sq.data[index] <<endl;
	return OK;
}
//插入元素
Status InsertElem(SqList *L){
	cout << "Please input the index of the inserted element : "<<endl; 
	int j = 0;
	ElemType e;
	cin >> j;
	cout << "Please input the element:"<<endl; 
	cin >> e;
	int index = j-1;
	if(index>-1 && index<MAXSIZE){//插入的位置合法 
		for(j = L->length-1;j>=index;j--){//移位 
			L->data[j+1] = L->data[j];
		}
		//把元素填充到空位中
		L->data[index] = e; 
		//表长+1
		L->length++; 
		return OK;
	}
	return ERROR;
}
//删除元素
Status DeleteElem(SqList *sq){
	int i = 0;
	cout << "Please input the index of the deleted element :" <<endl;
	cin >> i;
	int index = i-1;
	if(index<0){
		return ERROR;
	}
	if(index > MAXSIZE-1){
		return ERROR;
	}
	int j = 0;
	for(j=index;j<sq->length;j++){
		sq->data[j] = sq->data[j+1];
	}
	//长度减少1
	sq->length--; 
	return OK;
}
//修改元素 
Status ModifyElem(SqList *sq){
	cout << "Please input the index of modifying element :" <<endl;
	int i = 0;
	cin >> i;
	cout << "Please input the new element : "<<endl;
	ElemType e;
	cin >> e; 
	int index = i-1;
	if(index<0 || index > sq->length-1){//超出线性表长度 
		return ERROR;
	}
	sq->data[index] = e;
	return OK;
}

//主界面 
Status MainGUI(){
	cout << "==============Welcome to learn study the order sheet============="<<endl;
} 
Status Menu(){
	cout <<endl;
	cout << "==============Menu================"<<endl;
	cout << "==============1.Create============"<<endl;
	cout << "==============2.Retrieve=========="<<endl;
	cout << "==============3.Delete============"<<endl;
	cout << "==============4.Update============"<<endl;
	cout << "==============5.Exit=============="<<endl;
	cout << "Please choose the option:"<<endl;
}
Status GetNumber(int n){
	bool res = false;
	if(n>=0 && n<=5){
		res = true;
	}
	return res;
}
int main(){
	SqList sq;
	int flag =true;
	MainGUI();
	InitSqList(&sq);
	OutputSqList(sq);
	while(flag){		
		Menu();
		int n=0;
		cin >> n;
		if(GetNumber(n)){
			switch(n){
				case 1:
					InsertElem(&sq);
					break;
				case 2:
					GetElem(sq);
					break;
				case 3:
					DeleteElem(&sq);
					break;
				case 4:
					ModifyElem(&sq);
					break;
				case 5:
					flag = false;
					break;
				default:
					cout << "Input Error,please enter again"<<endl;
			}
			if(!flag){
				cout << "GoodBuy."<<endl;
				break;
			}
			OutputSqList(sq);
		}else{
			cout << "Please input number(1~5):"<<endl;
		}
	}
	return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值