#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;
}
数据结构——C/C++实现顺序表
最新推荐文章于 2024-07-12 16:27:59 发布