您的位置:首页 > 理论基础 > 数据结构算法

数据结构-顺序表的基本操作

2017-11-01 14:59 477 查看
 实验内容:

顺序表的基本操作

编写一个程序sqlist.cpp,实现以下顺序表的基本操作(假设顺序表的最大长度为50,元素类型ElemType为char)

(1)初始化顺序表L  (2)依次插入a,b,c,d,e五个元素  (3)输出顺序表L  (4)  输出顺序表L的长度  (5)判断顺序表L是否为空  (6)  输出顺序表L的第3个元素  (7)输出元素a的位置  (8)在第4个元素位置上插入元素f  (9)输出顺序表L  (10)删除L的第3个元素  (11)输出顺序表L  (12)释放顺序表L

#include<iostream>
#include<stdio.h>
using namespace std;
#define max 50
typedef struct
{
char data[max];
int length;
}sqlist;
void init(sqlist*&l)//初始化线性表
{
l=(sqlist*)malloc(sizeof(sqlist));
l->length=0;
}
bool empty(sqlist*&l)//判断线性表是否为空
{
return (l->length==0);
}
void length(sqlist*&l)//判断线性表长度
{
int i=l->length;
cout<<"线性表长度为:"<<i<<endl;
}
void create(sqlist*&l,char a[],int n)//创建线性表
{
int i=0,k=0;
l=(sqlist*)malloc(sizeof(sqlist));
while(i<n)
{
l->data[i]=a[i];
k++;
i++;
}
l->length=k;
}
void display(sqlist*l)//输出线性表
{
for(int i=0;i<l->length;i++)
cout<<l->data[i]<<" ";
}
void getelem(sqlist*&l,int n)//查找对应编号的元素
{
if(n<1||n>l->length)
cout<<"错误的位置!"<<endl;
char e=l->data[n-1];
cout<<e<<endl;
}
void deleteElem(sqlist*&l,int n)//删除对应编号的元素
{
int i;
if(n<1||n>l->length)
cout<<"错误的位置!";
n--;
char e=l->data
;
for(i=n;i<l->length;i++)
{
l->data[i]=l->data[i+1];
}
l->length--;
}
void destroy(sqlist*&l)//释放线性表
{
free(l);
}
void find(sqlist*&l,char e)//按元素查找编号
{
int i=0;
while(i<=l->length&&l->data[i]!=e)
i++;
if(i>l->length)
cout<<"该元素不存在!";
else
cout<<i+1<<endl;
}
void insert(sqlist*&l,int i,char e)//在对应编号插入元素
{
int j;
if(i<1||i>l->length)
cout<<"错误的输入!"<<endl;
i--;
for(j=l->length;j>i;j--)
l->data[j]=l->data[j-1];
l->data[i]=e;
l->length++;
cout<<"*******插入元素成功!*******"<<endl;
}
void insertTwo(sqlist*&l,int i)//在编号处插入多个元素
{
char e='e';
if(i<1||i-1>l->length)
cout<<"该位置无法插入!"<<endl;
i--;
while(e>='a'&& e<='e')
{
for(int j=l->length;j>i;j--)
l->data[j]=l->data[j-1];
l->data[i]=e;
e--;
l->length++;
}
}

int main()
{
sqlist*l;

/*cout <<"输入任意字符:";
char a[max];
int n=0;
char ch;
while(ch=getchar()!='\n')//字符的录入
{

for(int i=0;i<n;i++)
{
cin>>a[i];
n++;
}
}
int k=n;//计数
*/

char a[]={'q','t','u','w','x','i','p','s','m'};
int k=9;

init(l);

create(l,a,k);

cout<<"线性表元素为:";
display(l);
cout<<endl;

//在对应的编号插入元素
int x;
cout<<"输入想要插入元素的位置:";
cin>>x;
insertTwo(l,x);
cout<<"插入后的结果为:";
display(l);
cout<<endl;

length(l);//显示长度

if(empty)//判断是否为空
cout<<"非空!"<<endl;
else
cout<<"空!"<<endl;

cout<<"第三个元素为:";//查找第三个元素
getelem(l,3);
display(l);
cout<<endl;

cout<<"a的位置编号为:";//查找'a'的编号
find(l,'a');
cout<<endl;

cout<<"在第四个位置上插入'f'"<<endl;//在第四个位置插入'f'
insert(l,4,'f');
cout<<"顺序为:";
display(l);
cout<<endl<<endl;

cout<<"删除第三个元素后:";//删除第三个元素
deleteElem(l,3);
display(l);
cout<<endl;

destroy(l);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: