1.1顺序表的操作

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define ListIntitSize 15
#define ListIncrement 10
typedef int LElemType;
typedef struct {
	LElemType *base;
	int length;
	int listsize;
}SqList;
void CreateSqlList(SqList &L){
	L.base=(LElemType*)malloc(ListIntitSize*sizeof(LElemType));
	L.length=0;
	L.listsize=ListIntitSize;
	int a,flag;
	for(int i=0;i<ListIncrement;){
			a=rand()%90+10;
			flag=1;
		for( int j=i-1;j>=0;j--){
			if(a==L.base[j]){
				flag=0;
				break;
			}
		}
		if(flag){
			L.base[i]=a;
			L.length++;
			i++;
		}
	}
}
void print(SqList &L){
	for(int i=0;i<L.length;i++){
		printf("%d ",L.base[i]);
	}
	putchar('\n');
}
void find(SqList L,int a){
	int flag;
	flag=1;
	for(int i=0;i<L.length;i++){
		if(L.base[i]==a){
			flag=0;
			printf("查找成功\n");
		}
	}
	if(flag)
		printf("查找失败\n");
}
void insert(SqList &L,int a){
	L.base[L.length]=a;
	L.length++;
    for (int i = 0; i < L.length-1; i++)
        for (int j = 0; j < L.length-1-i; j++)
         if (L.base[j] > L.base[j+1])
                {
                    int temp;
                    temp=L.base[j+1];
                    L.base[j+1]=L.base[j];
                    L.base[j]=temp;
                }
}
void deletea(SqList &L,int a){

	for(int i=0;i<L.length;i++){
		if(L.base[i]==a){
			for(int j=i;j<L.length;j++){
				L.base[j]=L.base[j+1];
			}
			break;
		}
	}
	L.length--;
}
void Create2(SqList &L1,SqList &L2){
	L1.base=(LElemType*)malloc(ListIntitSize*sizeof(LElemType));
	L1.length=0;
	L1.listsize=ListIntitSize;
	int a,flag;
	for(int i=0;i<ListIncrement;){
			a=rand()%90+10;
			flag=1;
		for( int j=i-1;j>=0;j--){
			if(a==L1.base[j]){
				flag=0;
				break;
			}
		}
		if(flag){
			L1.base[i]=a;
			L1.length++;
			i++;
		}
	}
	L2.base=(LElemType*)malloc(ListIntitSize*sizeof(LElemType));
	L2.length=0;
	L2.listsize=ListIntitSize;
	int b,flag1;
	for(int i=0;i<ListIncrement;){
			b=rand()%90+10;
			flag1=1;
		for( int j=i-1;j>=0;j--){
			if(b==L2.base[j]){
				flag1=0;
				break;
			}
		}
		if(flag1){
			L2.base[i]=b;
			L2.length++;
			i++;
		}
	}
    for (int i = 0; i < L1.length-1; i++)
        for (int j = 0; j < L1.length-1-i; j++)
            if (L1.base[j] > L1.base[j+1])
                {
                    int temp;
                    temp=L1.base[j+1];
                    L1.base[j+1]=L1.base[j];
                    L1.base[j]=temp;
                }
     for (int i = 0; i < L2.length-1; i++)
        for (int j = 0; j < L2.length-1-i; j++)
            if (L2.base[j] > L2.base[j+1])
                {
                    int temp;
                    temp=L2.base[j+1];
                    L2.base[j+1]=L2.base[j];
                    L2.base[j]=temp;
                }
}
void SetMerge(SqList &L1,SqList &L2,SqList &L3){
    L3.base=(LElemType*)malloc((L1.length+L2.length)*sizeof(LElemType));
    L3.listsize=L1.length+L2.length;
    int i,j,k;
    i=j=k=0;
    while(i<L1.length&&j<L2.length){
        if(L1.base[i]<=L2.base[j]){
            L3.base[k++]=L1.base[i++];
        }
        else{
            L3.base[k++]=L2.base[j++];
        }
    }
    while(i<L1.length){
        L3.base[k++]=L1.base[i++];
    }
    while(j<L2.length){
        L3.base[k++]=L2.base[j++];
    }
    L3.length=k;
    for (int i = 0; i < L3.length-1; i++)
    for (int j = 0; j < L3.length-1-i; j++)
        if (L3.base[j] < L3.base[j+1])
        {
            int temp;
            temp=L3.base[j+1];
            L3.base[j+1]=L3.base[j];
            L3.base[j]=temp;
        }
}
int main()
{
	srand(time(0));
	SqList L,L1,L2,L3;
	CreateSqlList(L);
	print(L);
	printf("输入查找的元素\n");
	int a;
	scanf("%d",&a);
	find(L,a);
	printf("输入添加的元素\n");
	scanf("%d",&a);
	insert(L,a);
	print(L);
	printf("输入删除的元素\n");
	scanf("%d",&a);
	deletea(L,a);
	print(L);
	Create2(L1,L2);
	SetMerge(L1,L2,L3);
	print(L1);
	print(L2);
    print(L3);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值