【问题描述】取顺序表L中第 i个元素的值,存放在e中。。若这样的元素不存在,则返回值为false。
【输入形式】第1行顺序表的长度;第2行顺序表各数据元素;第3行为待取出元素位置。
【输出形式】若顺序表中存在第i个(逻辑位置)元素,则先输出顺序表和第i个被取出的元素,若无此位置;则分别输出顺序表、顺序表的表长、和The location does not exist。
【样例输入】
5
77 41 26 12 68
3
【样例输出】
77 41 26 12 68
26
#include <stdio.h>
#define MaxSize 50
typedef int ElemType;
typedef struct
{
ElemType data[MaxSize];
int length;
}SqList;
int Select(SqList L,int i)
{
if(i>=1&&i<=L.length+1){
return L.data[i-1];
} else {
return 0;
}
}
void Print(SqList L)
{
int i;
for ( i = 0; i < L.length; i++) {
printf("%d ",L.data[i]);
}
printf("\n");
}
int main() {
SqList L;
scanf("%d",&L.length);
int i;
for ( i = 0; i < L.length; i++) {
scanf("%d",&L.data[i]);
}
int seq=0;
scanf("%d",&seq);
int ret=Select(L,seq);
if(ret)
{
Print(L);
printf("%d\n",ret);
}else{
Print(L);
printf("%d\n",L.length);
printf("The location does not exist");
}
return 0;
}
【问题描述】删除顺序表第i个位置(逻辑位序)的元素。若删除位置不合法,则返回false,输出"The delete location does not exist"和顺序表的表长。成功则输出删除后的新表和被删除元素。假设顺序表的元素为整型数据。
【输入形式】第1行顺序表的长度;第2行顺序表各数据元素;第3行为删除位置。
【输出形式】若顺序表删除成功,则先输出删除后的顺序表和被删除元素,删除失败则输出"The delete location does not exist"和顺序表的表长。
#include <stdio.h>
#define MaxSize 50
typedef int ElemType;
typedef struct
{
ElemType data[MaxSize];
int length;
}SqList;
bool Delete(SqList &L,int i,ElemType &e)
{
if(i<1||i>L.length){
return false;
}
e=L.data[i-1];
int j;
for ( j =i ; j <L.length;j++) {
L.data[j-1]=L.data[j];
}
L.length--;
return true;
}
void Print(SqList L)
{
int i;
for ( i = 0; i < L.length; i++) {
printf("%d ",L.data[i]);
}
printf("\n");
}
int main() {
SqList L;
scanf("%d",&L.length);
int i;
for ( i = 0; i < L.length; i++) {
scanf("%d",&L.data[i]);
}
int seq=0;
scanf("%d",&seq);
ElemType e;
bool ret=Delete(L,seq,e);
if(ret)
{
Print(L);
printf("%d\n",e);
}else{
printf("The delete location does not exist\n");
printf("%d",L.length);
}
return 0;
}
【问题描述】查找顺序表第i个位置(逻辑位序)插入新元素e。若插入位置不合法,则返回false,输出"The insertion position does not exist"和顺序表的表长。成功则输出插入后的新表。假设顺序表的元素为整型数据。
【输入形式】第1行顺序表的长度;第2行顺序表各数据元素;第3行为插入位置和插入元素。
【输出形式】若顺序表插入成功,则先输出插入后的顺序表,插入失败则输出"The insertion position does not exist"和顺序表的表长。
#include <stdio.h>
#define MaxSize 50
typedef int ElemType;
typedef struct
{
ElemType data[MaxSize];
int length;
}SqList;
bool Insert(SqList &L,int i,ElemType e)
{
if(i<1||i>L.length){
return false;
}
if(i==MaxSize)
{
return false;
}
int j;
for ( j =L.length ; j >=i;j--) {
L.data[j]=L.data[j-1];
}
L.data[i-1]=e;
L.length++;
return true;
}
void Print(SqList L)
{
int i;
for ( i = 0; i < L.length; i++) {
printf("%d ",L.data[i]);
}
printf("\n");
}
int main() {
SqList L;
scanf("%d",&L.length);
int i;
for ( i = 0; i < L.length; i++) {
scanf("%d",&L.data[i]);
}
int pos;
ElemType e;
scanf("%d%d",&pos,&e);
bool ret=Insert(L,pos,e);
if(ret)
{
Print(L);
}else{
printf("The insertion position does not exist\n");
printf("%d",L.length);
}
return 0;
}
【问题描述】查找顺序表第1个值域与给定值e相等的元素的逻辑位序。若这样的元素不存在,则返回值为0。
【输入形式】第1行顺序表的长度;第2行顺序表各数据元素;第3行为待查找元素。
【输出形式】若顺序表中存在第1个值域与给定值e相等的元素,则先输出顺序表,再输出待查找元素的逻辑位序;若不存在则输出no
#include <stdio.h>
#define MaxSize 50
typedef int ElemType;
typedef struct
{
ElemType data[MaxSize];
int length;
}SqList;
int Select(SqList L,ElemType e)
{
int i;
for ( i = 0; i <L.length ; i++) {
if(L.data[i]==e){
return i+1;
}
}
return 0;
}
void Print(SqList L)
{
int i;
for ( i = 0; i < L.length; i++) {
printf("%d ",L.data[i]);
}
printf("\n");
}
int main() {
SqList L;
scanf("%d",&L.length);
int i;
for ( i = 0; i < L.length; i++) {
scanf("%d",&L.data[i]);
}
ElemType e;
scanf("%d",&e);
int ret=Select(L,e);
if(ret)
{
Print(L);
printf("%d\n",ret);
}else{
printf("no");
}
return 0;
}