(1)顺序表的操作 ① 输入一组整型元素序列,建立线性表的顺序存储结构。 ② 实现该线性表的遍历。 ③ 在该顺序表中查找某一元素,查找成功显示查找元素,否则显示查找失败。 ④ 在该顺序表中删除或插入指

欢迎加qq群:453398542 学习讨论,会定期分享资料课程,解答问题。

(1)顺序表的操作

① 输入一组整型元素序列,建立线性表的顺序存储结构。

② 实现该线性表的遍历。

③ 在该顺序表中查找某一元素,查找成功显示查找元素,否则显示查找失败。

④ 在该顺序表中删除或插入指定元素。

⑤ 建立两个按值递增有序的顺序表,将他们合并成一个按值递增有序的顺序表。

#include<stdio.h>

#include<stdlib.h>

#define SIZE 20

#define MORE 10

typedef struct{

int *base; //存储空间基址

int length; //当前长度

int listsize; //当前存储容量 

}SqList;

void InitList(SqList &L){

//构造线性表

L.base=(int *)malloc(SIZE*sizeof(int));

if(!L.base) 

exit(0);

L.listsize=SIZE;

scanf("%d",&L.length);

for(int i=0;i<L.length;i++)

scanf("%d",&L.base[i]);

void Output(SqList L){

//遍历 

for(int i=0;i<L.length;i++)

printf("%5d",L.base[i]); 

printf("\n");

void Locate(SqList L,int &e){

//查找 

int i;

for(i=0;i<=L.length;i++){

if(L.base[i]==e){

printf("%d\n",L.base[i]);

break;

}

if(i>L.length)

printf("查找失败!");

}

void Delete(SqList &L,int i,int &e){

//删除第i个元素

int j;

if(i<1||i>L.length)   exit(0);

e=L.base[i-1];

for(j=i-1;j<L.length;j++){

L.base[j]=L.base[j+1];

}

L.length--;

}

void Insert(SqList &L,int i,int e){

//插入

SqList q,p;

int j;

if(i<1||i>L.length+1)

exit(0);

if(L.length>=L.listsize){

int *newbase=(int *)realloc(L.base,(L.listsize+MORE)*sizeof(int));

if(!newbase)  exit(0);

L.base=newbase;

L.listsize+=MORE;

}

for(j=L.length-1;j>=i-1;j--){

L.base[j+1]=L.base[j];

}

L.base[i-1]=e;

L.length++;

}

void Merge(SqList La,SqList Lb,SqList &Lc){

//合并 

Lc.length=La.length+Lb.length;

Lc.base=(int *)malloc(Lc.listsize*sizeof(int));

int i,j,k;

i=0;j=0;k=0;

while(i<La.length&&j<Lb.length){

if(La.base[i]<=Lb.base[j]){

Lc.base[k++]=La.base[i++];

}

else

Lc.base[k++]=Lb.base[j++];

}

while(i<La.length){

Lc.base[k++]=La.base[i++];

}

while(j<Lb.length){

Lc.base[k++]=Lb.base[j++];

}

}

int main(){

SqList La,Lb,Lc;

int d,k,e;

printf("输入表的长度:"); 

InitList(La);

printf("输入要查找的数:");

scanf("%d",&d) ;

Locate(La,d);

printf("要删除第几个数?");

scanf("%d",&k);

Delete(La,k,e);

printf("删除的数为:%d\n",e); 

Output(La);

int a,b;

printf("输入要插入的位置和数:");

scanf("%d%d",&a,&b);

Insert(La,a,b);

Output(La);

printf("输入另一个表的长度:");

InitList(Lb);

Merge(La,Lb,Lc);

Output(Lc);

return 0;

  • 26
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值