//静态顺表的增删改查的基本操作
#include <iostream>
#include <stdlib.h>
#define MaxSize 100
using namespace std;
typedef int DataType;
typedef struct {
DataType List[MaxSize] ;
int size;
}SeqList;
//初始化列表中的元素
void ListInitiate(SeqList *L){
L->size = 0;
L->List[MaxSize]=0;
}
//当前元素个数
int ListLength(SeqList *L){
return L->size;
}
void systems(){
system("CLS");
}
void ListInitiation(SeqList *L,DataType x){
L->List[L->size] = x;
L->size++;
cout<<"初始化一个元素"<<L->List[L->size-1]<<"完成!"<<endl;
}
//插入元素
int ListInsert(SeqList *L ,int i , DataType x){
int j;
if(L->size >= MaxSize ){
cout<<"顺序表已满无法插入!"<<endl;
return 0;
}
else if(i < 0 || i > L->size ){
cout<< "参数i不合法!"<<endl;
return 0;
} else{
for(j = L->size;j >= i;j --){
L->List[j] = L->List[j -1];
}
L->List[j] = x;
L->size ++;
return 1;
}
}
//删除数据元素
int ListDelete(SeqList *L,int i ,DataType *x){
int j;
if(L->size <= 0){
cout<<"顺序表已空,无数据可删!"<<endl;
return 0;
}else{
*x = L->List[i];
for(j = i+1;j <= L->size-1;j++){
L->List[j -1] = L->List[j];
}
L->size --;
return 1;
}
}
//随意查询
int listgets(SeqList *L,DataType *x){
for(int i = 0;i<L->size;i++){
if(L->List[i]== *x){
cout<<"输出此数据存在,"<<*x<<"在第"<<(i+1)<<"个位置"<<endl;
}else if(i >= L->size-1){
cout<<"你输入的数据无法查到!"<<endl;
}
}
}
//随意删除
int listDeletes(SeqList *L,DataType*x){
for(int i = 0;i<L->size;i++){
if(L->List[i] == *x){
for(int j = i; j <L->size;j++){
L->List[j] = L->List[j+1];
}
cout << "删除成功!"<<endl;
break;
}else if(i >= L->size-1){
cout<<"无法找到你要的元素!"<<endl;
}
}
L->size--;
}
//查询元素
int ListGet(SeqList *L,int i ,DataType *x){
if(i < 0|| i> L->size -1 ){
cout<< " 参数 i 不合法!"<<endl;
return 0;
}else{
*x = L->List[i];
return 1;
cout<<"查询到了!在第"<<i<<"个位置!"<<endl;
}
}
void showData(SeqList *L){
for(int i = 0 ; i< L->size;i++){
cout<<"第"<<(i+1)<<"个元素:"<<"List["<<i<<"] ="<<L->List[i]<<endl;
}
}
void operation(int input){
int i,z;
SeqList *p;
// cout<<p;
switch(input){
case 0: cout<<"请输入你要初始化的元素:";cin>>z;ListInitiation(p,z);break;
case 1: cout<<"请选择要插入的位置:";cin >> i;cout<<"请选择要插入的内容:";cin>>z;ListInsert(p,i,z);break;
case 2: cout<<"请选择要查询的位置:";cin >> i;cout<<"请选择要查询的内容:";cin>>z;ListGet(p,i,&z);break;
case 3: cout<<"请选择要删除的位置:";cin >> i;cout<<"请选择要删除的内容:";cin>>z;ListDelete(p,i+1,&z);break;
case 4: if(p->size > 0){cout<<"显示已插入的元素:"<<endl; showData(p);}else{cout<<"次此列表为空!"<<endl;}break;
case 5: cout<<"进行全表查询:"<<endl;cout<<"请输入要查找的元素:";cin>>z;listgets(p,&z); break;
case 6: cout<<"进行全表删除:"<<endl;cout<<"请输入要删除的元素:";cin>>z;listDeletes(p,&z); break;
case 7: systems();
}
}
void menu(){
int input;
cout<<"_________________________________________________________"<<endl;
cout<<"|*******************************************************|"<<endl;
cout<<"|*****************欢迎进入菜单选项**********************|"<<endl;
cout<<"|*****************进入初始化阶段请稍后....**************|"<<endl;
cout<<"|*****************0、选择初始化插入元素 **************|"<<endl;
cout<<"|*****************1、选择插入元素 **************|"<<endl;
cout<<"|*****************2、查询需要的元素 **************|"<<endl;
cout<<"|*****************3、删除需要删除的元素 **************|"<<endl;
cout<<"|*****************4、显示已插入的元素 **************|"<<endl;
cout<<"|*****************5、进行全表查询元素 **************|"<<endl;
cout<<"|*****************6、进行全表删除元素 **************|"<<endl;
cout<<"|*****************7、清频函数调用 **************|"<<endl;
cout<<"|*******************************************************|"<<endl;
cout<<"_________________________________________________________"<<endl;
cout<<"请选择:";cin>>input;
operation(input);
menu();
}
int main(){
SeqList *p;
ListInitiate(p);
ListLength(p);
menu();
return 0;
}