沈师PTA数据结构第2章实验题集1—顺序表操作
顺序表的建立及遍历 (20 分)
读入n值及n个整数,建立顺序表并遍历输出。
输入格式:
读入n及n个整数
输出格式:
输出n个整数,以空格分隔(最后一个数的后面没有空格)。
输入样例:
在这里给出一组输入。例如:
4
-3 10 20 78
结尾无空行
输出样例:
在这里给出相应的输出。例如:
-3 10 20 78
结尾无空行
#include
int main(){
int a;
scanf("%d",&a);
int b[a];
for(int i=0;i
jmu-ds-顺序表区间元素删除 (20 分)
若一个线性表L采用顺序存储结构存储,其中所有的元素为整数。设计一个算法,删除元素值在[x,y]之间的所有元素,要求算法的时间复杂度为O(n),空间复杂度为O(1)。
输入格式:
三行数据,第一行是顺序表的元素个数,第二行是顺序表的元素,第三行是x和y。
输出格式:
删除元素值在[x,y]之间的所有元素后的顺序表。
输入样例:
10
5 1 9 10 67 12 8 33 6 2
3 10
输出样例:
1 67 12 33 2
#include
int main(){
int a[10000];
int x,y,i,t,n;
int flag=1;
scanf("%d",&n);
for(i=0;iy){
printf("%d",a[i]);
flag=0;
}
}
else{
if(a[i]y)
printf(" %d",a[i]);
}
}
return 0;
}
数组循环左移 (20 分)
本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a0a1?a**n?1)变换为(a**m?a**n?1a0a1?a**m?1)(最前面的m个数循环移至最后面的m个位置)。如果还需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?
输入格式:
输入第1行给出正整数n(≤100)和整数m(≥0);第2行给出n个整数,其间以空格分隔。
输出格式:
在一行中输出循环左移m位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。
输入样例:
8 3
1 2 3 4 5 6 7 8
结尾无空行
输出样例:
4 5 6 7 8 1 2 3
结尾无空行
#include
int main(){
int m,n;
int arr[100];
scanf("%d %d",&n,&m);
for(int i=0;i
jmu-ds-简单密码 (20 分)
Julius Caesar曾经使用过一种很简单的密码。对于明文中的每个字符,将它用它字母表中后5位对应的字符来代替,这样就得到了密文。比如字符A用F来代替。如下是密文和明文中字符的对应关系。
密文 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
明文 V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
你的任务是对给定的密文进行解密得到明文。 你需要注意的是,密文中出现的字母都是大写 字母。密文中也包括非字母的字符,对这些字符不用进行解码。
输入格式:
输入一行密文字符串,可包含空格。
输出格式:
输出明文字符串。输入明文字符串为空时,输出“NULL”
输入样例:
AB 12aC dab EF
结尾无空行
输出样例:
VW 12aX dab ZA
结尾无空行
copy自网上的一个c++写法,目前看不懂,但是能得分
#include
#include
using namespace std;
int main()
{
string str1,str2;
getline(cin,str1);
if(str1.size()==0)
{
cout<<"NULL";
return 0;
}
for(int i = 0;i='A' && str1[i]<='E')
{
str1[i] = str1[i] + 21;
}
else if(str1[i]>='F' && str1[i] <= 'Z')
{
str1[i] = str1[i] - 5;
}
}
cout << str1;
return 0;
}
自己思考的C语音写法在输入为空的时候判断错误,copy了网上的一个C++写法。
#include
#include
int main(){
char s[26];
while(fgets(s,26,stdin)){ //接收START
if(strcmp(s,"ENDOFINPUT")==0)
break;
fgets(s,201,stdin); //接收密文
int i,len=strlen(s);
for(i=0;i='A'&&s[i]<='Z'){
s[i]=(s[i]-'A'-5+26)%26+'A'; //核心算法,向左平移5个
}
printf("%c",s[i]);
}
//printf("");
fgets(s,201,stdin); //接收END
}
return 0;
}
R7-5 递增有序顺序表的插入 (20 分)
实验目的:1、掌握线性表的基本知识 2、深入理解、掌握并灵活运用线性表。3、熟练掌握线性表的存储结构及主要运算的实现 已知顺序表L递增有序,将X插入到线性表的适当位置上,保证线性表有序。。
输入格式:
第1行输入顺序表长度,第2行输入递增有序的顺序表,第3行输入要插入的数据元素X。
输出格式:
对每一组输入,在一行中输出插入X后的递增的顺序表。
输入样例:
在这里给出一组输入。例如:
5
1 3 5 7 9
6结尾无空行
输出样例:
在这里给出相应的输出。例如:
1,3,5,6,7,9,
结尾无空行
#include
int main(){
int dz[200];
int a,b,i,j;
scanf("%d",&a);
for(i=0;i0;i--){
if(dz[i]