C语言编程线性表A-B,如何用c语言编合并两个线性表的程序

#include

#include

#define OK 1

#define ERROR 0

#define TRUE 1

#define FALSE 0

#define OVERFLOW -2

#define LIST_INIT_SIZE 100

#define LISTINCREMENT 10

#define Compare( a, b) ( ((a) == (b)) ? (1) : (0) )

typedef int ElemType;

typedef int Status;

typedef struct{

ElemType *elem;

int length;

int listsize;

}Sqlist;

Status InitList_Sq(Sqlist *L) {

L->elem = (ElemType *) malloc (LIST_INIT_SIZE * sizeof(ElemType) );

if(!L->elem) exit( OVERFLOW );

L->length=0;

L->listsize = LIST_INIT_SIZE;

return OK;

}

Status ListInsert_Sq ( Sqlist *L, int i, ElemType e ){

ElemType *newbase, *p, *q;

if(iL->length 1) return ERROR;

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

newbase = (ElemType *)realloc(L->elem, (L->listsize LISTINCREMENT)*sizeof(ElemType) );

if(!newbase) exit(OVERFLOW);

L->elem = newbase;

L->listsize = LISTINCREMENT;

}

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

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

*(p 1)=*p;

*q = e;

L->length;

return OK;

}

Status ListDisplay(Sqlist A){

int i=0;

while(i listsize = Lc->length = La。

length Lb。length;

Lc->elem = (ElemType*) malloc (Lc->listsize * sizeof(ElemType));

pc = Lc->elem;

if(!Lc->elem) exit(OVERFLOW);

pa_last = La。

elem La。length - 1;

pb_last = Lb。elem Lb。length - 1;

while( pa length; j ) {

key = A->elem[j];

i = j - 1;

while( i >= 0 && A->elem[i] > key ) {

A->elem[i 1] = A->elem[i];

--i;

}

A->elem[i 1] = key;

}

}

int main( void ) {

int e, i, a, b;

Sqlist A, B, C;

InitList_Sq(&A);

InitList_Sq(&B);

printf("请输入第一个表结点数:");

scanf("%d", &a);

for(i=0; i< a; i ){

printf("请输入第%d个数

", i 1);

scanf("%d", &e);

ListInsert_Sq(&A,i 1,e);

}

ListDisplay(A);

printf("

请输入第二个表结点数:");

scanf("%d", &a);

for(i=0; i< a; i ){

printf("请输入第%d个数

", i 1);

scanf("%d", &e);

ListInsert_Sq(&B,i 1,e);

}

ListDisplay(B);

printf("

");

INSERTION_SORT(&A);

INSERTION_SORT(&B);

ListDisplay(A);

printf("

");

ListDisplay(B);

printf("

两个表的合并:

");

Mergelist_Sq(A, B, &C);

ListDisplay(C);

printf("

");

system("PAUSE");

}

/*当两个顺序表合并的时候,最大的问题,可能不是合并本身,而是合并前的排序 ,考虑到

了了们的水平有限,这里就使用了比较简单的插入排序。

*/

//这里只有顺序表的合并,有需要的话,我会把链表的合并也写一下。

全部

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值