7-1 顺序表的建立及遍历
分数 30
作者 陈晓梅
单位 广东外语外贸大学
读入n值及n个整数,建立顺序表并遍历输出。
输入格式:
读入n及n个整数
输出格式:
输出n个整数,以空格分隔(最后一个数的后面没有空格)。
输入样例:
在这里给出一组输入。例如:
4
-3 10 20 78
输出样例:
在这里给出相应的输出。例如:
-3 10 20 78
题解:
#include <stdio.h>
#define N 1000
typedef struct{
int a[N];
int length;
}sqlist;
int main()
{
sqlist l;
int i;
scanf("%d",&l.length);
for(i=1;i<=l.length;i++)
{
scanf("%d",&l.a[i]);
}
for(i=1;i<=l.length;i++)
{
if(i!=l.length)
{
printf("%d ",l.a[i]);
}
else{
printf("%d",l.a[i]);
}
}
return 0;
}
7-2 递增有序顺序表的插入
分数 10
实验目的:1、掌握线性表的基本知识 2、深入理解、掌握并灵活运用线性表。3、熟练掌握线性表的存储结构及主要运算的实现
已知顺序表L递增有序,将X插入到线性表的适当位置上,保证线性表有序。。
输入格式:
第1行输入顺序表长度,第2行输入递增有序的顺序表,第3行输入要插入的数据元素X。
输出格式:
对每一组输入,在一行中输出插入X后的递增的顺序表。
输入样例:
在这里给出一组输入。例如:
5
1 3 5 7 9
6
输出样例:
在这里给出相应的输出。例如:
1,3,5,6,7,9,
题解:
#include <stdio.h>
#define N 1000
typedef struct{
int a[N];
int length;
}sqlist;
int main()
{
sqlist l;
int x,i;
scanf("%d",&l.length);
for(i=1;i<=l.length;i++)
{
scanf("%d",&l.a[i]);
}
scanf("%d",&x);
for(i=l.length;l.a[i]>=x;i--)
{
l.a[i+1]=l.a[i];
}
l.a[i+1]=x;
l.length++;
for(i=1;i<=l.length;i++)
{
printf("%d,",l.a[i]);
}
return 0;
}
7-3 顺序表(删除)
分数 15
已知一组数据,采用顺序存储结构存储,其中所有的元素为整数。设计一个算法,删除元素值在[x,y]之间的所有元素
输入格式:
输入包含三行数据,第一行是表中元素个数,第二行是顺序表的各个元素,第三行是区间x和y。
输出格式:
删除元素值在[x,y]之间的所有元素后,输出新的顺序表。(最后无空格)
输入样例:
在这里给出一组输入。例如:
10
55 11 9 15 67 12 18 33 6 22
10 20
输出样例:
在这里给出相应的输出。例如:
55 9 67 33 6 22
题解:
#include <stdio.h>
int main()
{
int i,j=0,len,x,y,length=0;
scanf("%d",&len);
int a[len],b[len];
for(i=1;i<=len;i++)
{
scanf("%d",&a[i]);
}
scanf("%d %d",&x,&y);
for(i=1;i<=len;i++){
if(a[i]<x||a[i]>y)
{
b[++j]=a[i];
length++;
}
}
for(i=1;i<=length-1;i++)
{
printf("%d ",b[i]);
}
printf("%d",b[i]);
return 0;
}
7-4 数组元素循环右移n位
分数 15
从键盘接收两个整数m和n,分别表示一维整型数组的元素个数,和要向移动的位数。已知0<m<=100,以及n>0。
在用户输入m和n后,第二行输入相应个数的数组元素。
程序要实现的功能是,让数组元素往右移动n位。
例如,数组的5个元素是:1,2,3,4,5。
往右移动1位后:5,1,2,3,4
往右移动2位后:4,5,1,2,3
输入格式:
第一行输入两个整数,第二行输入数组元素。
输出格式:
移动后,数组的每一个元素,注意每个数组元素后有且仅有一个空格。
输入样例:
第一行的数据5和2,表示数组容量为5,让数组元素往右移动2个位置。
第二行是数组的每一个元素的值。
5 2
1 2 3 4 5
输出样例:
输出移动后的数组元素值,注意每个元素后有且仅有一个空格。
4 5 1 2 3
题解 :
#include <stdio.h>
int main()
{
int n,i,m,temp;
scanf("%d %d",&m,&n);
int a[m];
for(i=0;i<m;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<m;i++)
{
while(n>m)
{
n-=m;
}
temp=(m-n+i)%m;
printf("%d ",a[temp]);
}
return 0;
}