1.编写一个程序,实现顺序表的各种基本运算,在此基础上完成如下功能: (1)初始化顺序表L。 (2)依次在顺序表L中插入元素a、b、c、e。 (3)输出顺序表L

空白控* 2020-04-13 09:03:07
#include <iostream>
#define Maxsize 100
#define OK 1
#define ERROR 0
#define OVERFLOW -2
using namespace std;
typedef char ElemType;
typedef int Status;
typedef struct
{
ElemType *elem;//存储空间的基地址
int length;//当前长度
}SqList;
Status InitList(SqList &L)//初始化顺序表
{
L.elem=new ElemType[Maxsize];
if(!L.elem) exit(OVERFLOW); //存储分配失败
L.length=0;
return OK;
}
void InsertList(SqList &L)//向顺序表中插入元素
{
int i, num;
cout<<"(2)依次在顺序表L中插入元素a,b,c,e:"<<endl;
cin>>num;
L.length=num;
for (i = 1; i<=num; i++)
cin >> L.elem[i];
}
void PrintList(SqList L)//输出顺序表L
{
int i;
for (i = 1; i <= L.length; i++)
cout << L.elem[i] << " ";
cout<<endl;
}
void LengthList(SqList L)//输出顺序表的长度
{
cout << "(4)顺序表的长度为:" << L.length<<endl;
}
void SearchList(SqList L)//查询顺序表L的第i个元素
{
int i;
cout << "(5)请输入要查询元素的位置:";
cin >> i;
cout << "(5)您查询的元素为:" << L.elem[i] << endl;
}
int LocateElem(SqList L,ElemType e) //输出元素a的位置
{
for(int i=1;i<L.length;i++)
if(L.elem[i]==e)
cout<<"(6)元素a的位置是:"<<i<<endl;
return 0;
}
Status ListInsert(SqList &L,int i,ElemType e) //在第i个元素之前插入元素f
{
if((i<1)||(i>L.length+1)||(L.length==Maxsize)) return ERROR;
for(int j=L.length+1;j>i;j--)
L.elem[j]=L.elem[j-1];
L.elem[i]=e;
++L.length;
return OK;
}
Status ListDelete(SqList &L,int i)//删除第i个元素
{
if((i<1)||(i>L.length)) return ERROR;
for (int j=i;j<=L.length;j++)
L.elem[j] = L.elem[j+1];
--L.length;
return 0;
}
int main()
{
SqList L;
cout<<"(1)初始化顺序表L: "<<endl;
InitList(L);
InsertList(L);
cout<<"(3)输出顺序表L: ";
PrintList(L);
LengthList(L);
SearchList(L);
LocateElem(L,'a');
ListInsert(L,4,'f');
cout<<"(7)(8)插入元素f后输出顺序表L: ";
PrintList(L);
ListDelete(L,3);
cout<<"(9)(10)删除第3个元素后输出顺序表L: ";
PrintList(L);
}
...全文
807 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧