基本题目大意: 多组测试数据,对于每组测试数据,首先输入的是两个整数n,m(0<m <n<100),分别表示顺序表初始有n个元素,m次操作
接下来是n个整数,表示顺序表中的n个元素
然后是m次操作命令,命令是Insert X Y ,Delete X , Locate X , GetElem X中的一种,其中的X,Y均为整数。
解题思路:这道题主要是在码代码方面比较繁琐,其他方面都没有什么太大难度,主要如果用静态存储结构,在进行插入和删除的时候,要注意考虑删除或插入字符后面的内容,千万不能弄混,造成错误;如果是用动态存储结构,在插入,删除时只要考虑前后指针的关系即可,但在查找元素的问题上就会有一定的麻烦,记得设定好计数器和头指针。。。。以下是代码(静态结构)
#include <iostream>
#include <cstdio>
#include <iomanip>
#include <string>
#include <cstring>
#define maxsize 110
using namespace std;
char num[maxsize];
//int finger[maxsize];
typedef struct
{
int ans[maxsize];
int n; //用来计数
} sqmark;
void print(sqmark fff) //用来输出顺序表
{
for(int t=0;t<fff.n;t++)
{
cout<<fff.ans[t]<<" ";
}
cout<<endl;
}
void Insert(sqmark &ff) //在顺序表中插入元素
{
int x,y,k;
cin>>x>>y;
if(x>ff.n+1) cout<<"Wrong Input!"<<endl;
else
{
for(k=ff.n; k>x-1;k--) //记得顺序表的插入和删除时,要先空出位置,不能直接进行赋值,以免造成错误
{
ff.ans[k]=ff.ans[k-1];
}
ff.ans[k]=y;
ff.n++;
print(ff);
}
}
void Delete(sqmark &ff) //删除顺序表中的元素
{
int x,number=-1;
cin>>x;
for(int k=0;k<ff.n;k++)
{
if(ff.ans[k]==x) { number=k; break;}
}
if(number!=-1)
{
for(int k=number;k<ff.n-1;k++)
ff.ans[k]=ff.ans[k+1];
ff.n--;
print(ff);
}
else
cout<<"Wrong Input!"<<endl;
}
void Locate(sqmark &ff) //定位元素X的位置
{
int x,number=-1;
cin>>x;
for(int k=0;k<ff.n;k++)
{
if(ff.ans[k]==x) { number=k; break;}
}
if(number!=-1)
{
cout<<number+1<<endl;
}
else
cout<<"Wrong Input!"<<endl;
}
void GetElem(sqmark &ff) //查找顺序表中X位置的元素值
{
int x;
cin>>x;
if(x>ff.n) cout<<"Wrong Input!"<<endl;
else
{
cout<<ff.ans[x-1]<<endl;
}
}
int main()
{
int nn,mm;
while(cin>>nn>>mm)
{
sqmark fin;
fin.n=0;
for(int i=1; i<=nn; i++)
{
cin>>fin.ans[fin.n++];
}
for(int i=1; i<=mm; i++)
{
cin>>num;
if(num[0]=='I')
{
Insert(fin);
}
else if(num[0]=='D')
{
Delete(fin);
}
else if(num[0]=='L')
{
Locate(fin);
}
else if(num[0]=='G')
{
GetElem(fin);
}
}
}
}
这是顺序表的静态存储结构的几个基本操作:
顺序表是我们数据结构中的基本储存形式,现在给定一个顺序表,有如下操作:
Insert X Y: 在顺序表中X位置插入Y元素,遍历输出当前顺序表的所有元素
Delete X:删除顺序表中的X元素,如果有多个X元素,只删除第一个X,遍历输出当前顺序的所有元素
Locate X:输出顺序表中X元素的所在的位置,如果有多个X元素,只输出第一个X元素的位置
GetElem X:输出顺序表中X位置上的元素
如果操作合法,则输出相应的结果
如果操作不合法,则输出"Wrong Input!"
阅读(1573) | 评论(0) | 转发(0) |