📄 创建顺序表.cpp
字号:
#include<iostream.h>
#include<iomanip.h>
#define MaxLen 50 //顺序表中最多元素个数
typedef int elemtype;
typedef elemtype sqlist[MaxLen];
int create(sqlist A) //创建顺序表
{
int i,n;
cout<<"创建一个顺序表"<<endl;
cout<<"输入元素个数:";
cin>>n;
cout<<"输入这n个元素值:";
for(i=0;i<n;i++)
cin>>A[i];
return n;
}
void disp(sqlist A,int n) //输出一个顺序表
{
int i;
cout<<"输出一个顺序表"<<endl<<" ";
if(n==0)
cout<<"空表";
for(i=0;i<n;i++)
cout<<A[i]<<" ";
cout<<endl;
}
int ins(sqlist A,int n,int i,elemtype x) //在顺序表的第i个元素前插入一个元素x
//若i=0,则新元素作为第一个元素;若i=n,则插入在最后
{
int j;
if(i<0||i>n)
cout<<"i值下溢或上溢"<<endl;
else
{
for(j=n-1;j>=i;j--)
A[j+1]=A[j]; //将第个元素以及其后的元素后移
A[i]=x;n++; //顺序表长度增加1
}
return n;
}
int del(sqlist A,int n,int i)
{
int j;
if(i<0||i>n)
cout<<"i值下溢或上溢"<<endl;
else
{
for(j=i-1;j<n;j++)
A[j]=A[j+1]; //将第i个元素之后的元素前移覆盖A[i]
n--;
}
return n;
}
int find(sqlist A,int n,elemtype x) //在一个n个元素的顺序表中查找元素值为x的元素
{
int i=0;
while(i<=n && A[i]!=x)
i++;
if(i<n)
return 1;
else
return 0;
}
void sort(sqlist A,int k)
{
int i,j,t,minval,minidx;
for(i=0;i<k;i++)
{
minval=A[i]; //存储A[i+1]至A[i]之间的最小数
minidx=i; //存储A[i+1]至A[i]之间的最小数的下标
for(j=i+1;j<k;j++)
if(A[j]<minval)
{
minval=A[j];
minidx=j;
}
if(minidx!=i)
{
t=A[i]; //将A[i]与A[minidx]进行交换
A[i]=A[minidx];
A[minidx]=t;
}
}
}
void invert(sqlist A,int n)
{
int m=n/2,i; //m为长度的一般即[n/2]
elemtype temp;
for(i=0;i<m;i++) //将A[i]与A[n-i-1]进行交换
{
temp=A[i];
A[i]=A[n-i-1];
A[n-i-1]=temp;
}
}
void main()
{
sqlist A;
int n;
n=create(A);
disp(A,n);
int i,x,j;
cout<<"在第i个元素前插入一个新元素x,请输入i与x的值:";
cin>>i>>x;
n=ins(A,n,i-1,x);
disp(A,n);
cout<<"要删除第j个元素,请输入j的值:";
cin>>j;
n=del(A,n,j);
disp(A,n);
sort(A,n);
cout<<"经过排序后的顺序表为:"<<endl;
for(int s=0;s<n;s++)
cout<<setw(3)<<A[s];
cout<<endl;
cout<<"倒置后";
invert(A,n);
disp(A,n);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -