顺序表的修改算法c语言,数据结构顺序表表相关算法的C语言实现

#include

#include

#define LIST_INIT_SIZE 100

#define LISTCREMENT 10

#define ElemType int

typedef struct{

ElemType * elem;

int length;

int listsize;

}Sqlist;

void InitList_Sq(Sqlist &L){

L.elem=(ElemType

*)malloc(LIST_INIT_SIZE*sizeof(ElemType));

if(!L.elem){

exit(0);

}

L.length=0;

L.listsize=LIST_INIT_SIZE;

}

void ListInsert_sq(Sqlist &L,int i,ElemType e){

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

exit(0);

}

ElemType *q,*p;

q=&(L.elem[i-1]);

for(p=&(L.elem[L.length-1]);p>=q;p--){

*(p+1)=*p;

}

*q=e;

L.length++;

}

void ListDelete_Sq(Sqlist &L,int i,ElemType &e){

ElemType *q,*p;

q=&(L.elem[i-1]);

p=&(L.elem[L.length-1]);

e=*q;

for(q;q<=p;q++){

*q=*(q+1);

}

}

void MergeList_Sq(Sqlist La,Sqlist Lb,Sqlist &Lc){

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

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

Lc.elem=(ElemType

*)malloc(Lc.listsize*sizeof(ElemType));

ElemType * pa,* pb,* pc,* pa_last,* pb_last;

pa=La.elem;

pb=Lb.elem;

pc=Lc.elem;

pa_last=La.elem+La.length-1;

pb_last=Lb.elem+Lb.length-1;

while(pa<=pa_last && pb<=pb_last){

if(*pa <= *pb){

*pc++ = *pa++;

}

else{

*pc++ = *pb++;

}

}

while(pa<=pa_last){

*pc++=*pa++;

}

while(pb<=pb_last){

*pc++=*pb++;

}

}

int main(){

printf("选择你要进行的操作:\n1.插入元素  2.删除元素

3.按非递减顺序合并顺序表\n");

int flag;

scanf("%d",&flag);

int m,n,k,p;

Sqlist L;

InitList_Sq(L);

printf("输入顺序表的元素个数\n");

scanf("%d",&n);

L.length=n;

printf("输入顺序表的元素:\n");

for(int i=0;i<=n-1;i++){

scanf("%d",&m);

L.elem[i]=m;

}

printf("当前顺序表为:\n");

for(int j=0;j<=n-1;j++){

printf("%d ",L.elem[j]);

}

if(flag==1){

printf("请输入插入元素:\n");

scanf("%d",&k);

printf("\n请输入插入位置:\n");

scanf("%d",&p);

ListInsert_sq(L,p,k);

printf("...插入完毕!\n");

printf("新顺序表:\n");

for(int

q=0;q<=n;q++){

printf("%d ",L.elem[q]);

}

}

else if(flag==2){

printf("\n请输入要删除的元素位置:\n");

int r;

scanf("%d",&r);

int u;

ListDelete_Sq(L,r,u);

printf("新顺序表:\n");

for(int w=0;w

printf("%d ",L.elem[w]);

}

}

if(flag==3){

fflush(stdin);

system("cls");*/

int alength,blength,yuansu;

Sqlist La,Lb,Lc;

printf("请输入A的长度:\n");

scanf("%d",&alength);

InitList_Sq(La);

La.length=alength;

printf("请输入B的长度:\n");

scanf("%d",&blength);

InitList_Sq(Lb);

Lb.length=blength;

InitList_Sq(Lc);

Lc.length=alength+blength;

printf("请输入A元素:\n");

for(int f=0;f<=alength-1;f++){

scanf("%d",&yuansu);

La.elem[f]=yuansu;

}

printf("请输入B元素:\n");

for(int h=0;h<=blength-1;h++){

scanf("%d",&yuansu);

Lb.elem[h]=yuansu;

}

MergeList_Sq(La,Lb,Lc);

for(int t=0;t<=alength+blength-1;t++){

printf("%d",Lc.elem[t]);

}

}

return 0;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值