#include <iostream>
using namespace std;
#define maxsize 100
typedef struct {
char elem[maxsize];
int length;
}sqlist; //定义顺序表
void initlist(sqlist& l) { //初始化方法
l.length = 0;
}
void insertlist(sqlist& l, int n) { //初始赋值
cout << "请输入"<<n<<"位字符:" << endl;
char x;
for (int i = 0; i < n; i++) { //利用循环遍历顺序表的1-n个元素
cin >> x;
l.elem[i] = x;
l.length++;
}
cout << "导入成功~~~~~" << endl;
}
void printlist(sqlist l) { //将顺序表l.length个元素利用循环将l.elem[i]进行遍历且输出。
cout << ",目前顺序表内容为:";
int i = 0;
while (i < l.length) {
cout << l.elem[i] << " ";
++i;
}
}
void listempty(sqlist l) { //断顺序表的长度是否为0,若不为0则为空,否则不为空。
if (l.length==0){
cout << "您的顺序表是空的" << endl;
}
cout << "您的顺序表不是空的" ;
}
void listlength(sqlist l) { //直接返回l.length顺序表的长度。
cout<<",长度为:" << l.length;
}
void listinsert(sqlist& l, int i, char e) { //插入操作
if (i<1 || i>l.length) cout << "对不起,您要插入的位置不对!" << endl;//判断长度i是否合法
if (l.length == maxsize) cout << "对不起,您的空间不足啦!" << endl;//判断存储空间是否满足
for (int j = l.length; j >=i-1 ; j--){
l.elem[j + 1] = l.elem[j]; //将前一个元素往后一个元素赋值
}
l.elem[i - 1] = e;
++l.length;
cout << "插入成功~~~~~" << endl;
}
void getlist(sqlist& l, int i) {
if (i<1||i>l.length){ //判断长度i是否合法
cout << "对不起,您输入的位置不对!" << endl;
}else{
char e = l.elem[i - 1];
cout <<"取值成功~~~~~你取的第"<<i<<"位置的值是" << e << endl;
}
}
void locationlist(sqlist l,char e) { //定位元素位置
for (int i = 0; i < l.length; i++){
if (l.elem[i]==e) {
cout << "您要查找的"<<e<<"元素下表为:"<<i+1 << endl; //返回其位置
}
}
}
void deletelist(sqlist &l,int i) {
if (i<1||i>l.length)cout << "第" << i << "位置没有字符哦~" << endl;//判断长度i是否合法
for (int j=i; j <= l.length-1; j++) {
l.elem[j-1] = l.elem[j]; //将后一个元素往前一个元素赋值
}
--l.length;
cout << "删除成功";
}
void Clearlist(sqlist &l) {
if (l.elem){
/*delete &l;//释放内存*/
l.length = 0;
cout << endl<<"顺序表已置空~";
}
}
int main() {
sqlist l;
initlist(l);
cout << "第一项:字符导入。请输入要导入的字符个数:" << endl;
int n; cin >> n;
insertlist(l, n); //插入字符 a,b,c,d,e
listempty(l); //判断是否为空
listlength(l); //输出顺序表的长度
printlist(l); //输出顺序表
cout <<endl<< "第二项:插入操作。"<<endl;
cout<<"1.你想在第几个位置添加字符呢:" << endl;
int a;cin >> a;
cout <<"2.请输入你要插入的字符:" << endl;
char b; cin >> b;
listinsert(l, a, b); //插入字符操作
cout << "第三项:取值操作。你想取第几个位置的字符呢:" << endl;
int c;
cin >> c;
getlist(l,c); //获取第i个字符
cout << "第四项:查找操作,你想查找什么元素呢?" << endl;
char d; cin >>d;
locationlist(l, d); //获取输入的元素位置
cout << "第五项:删除操作,你想删除第几个元素?" << endl;
int e; cin >> e;
deletelist(l,e); //删除你要删除第i个元素
listlength(l); //输出顺序表的长度
printlist(l); //输出顺序表
Clearlist(l); //置空顺序表
}
代码仅供参考,如有好的方法,可以放在评论区。
程序运行截图