C语言实现两个线性表的连接

it2024-07-24  39

头文件

#include<stdlib.h> #include<stdio.h>

定义最大长度

#define MAXSIZE 100

结构体List

typedef struct { int *elem; int length; }List;

int initlist(List *L) //初始化List { L->elem=(int )malloc(MAXSIZEsizeof(int)); if(!L->elem) return 0; L->length=0; return 1; }

输出函数

void mergelist(List &la,List &lb) //输出la、lb { //printf(“mergelist!!!\n”);//检查进入

int i; printf("la:"); for(i=0;i<la.length;i++){ printf("%d",la.elem[i]); } printf("\n"); printf("lb:"); for(i=0;i<lb.length;i++){ printf("%d",lb.elem[i]); } printf("\n");

}

连接函数

将表lb连接到la的尾部,同时判断相同元素存在则不插入

void connect(List &la,List &lb)//连接la,lb 将lb连接到la { printf(“执行connect()\n”); int alen=la.length,blen=lb.length,b=0,count=0;

for(int i=alen;i<(alen+blen);i++) { if(lb.elem[b]){ int key1=1; //key1=1可以执行插入 =0不可以插入 //检查重复元素 for(int key=0 ; key<alen; key++ ){ if(lb.elem[b]==la.elem[key]){ key1=0; //如果有重复元素key1置0 i--; } } if(key1!=0){ printf("向la插入->%d",lb.elem[b]); la.elem[i]=lb.elem[b]; //插入 count++; } b++; } } printf("count:%d\n",count); la.length=alen+count; mergelist(la,lb); //输出

}

接收用户键盘输入函数

以接收输入0为结束

void input(List &la,List &lb){ //------------------la int i;

printf("enter: la \n");//la输入 for(i=0;i<MAXSIZE;i++) { scanf("%d",&la.elem[i]); if(la.elem[i]==0){ //输入0结束输入 la.length=i; printf("la长:%d",i); break; } } printf("\n"); //------------------lb int j; printf("enter: lb \n");//lb输入 for(j=0;j<MAXSIZE;j++) { scanf("%d",&lb.elem[j]); if(lb.elem[j]==0){ //输入0结束输入 lb.length=j; printf("lb长:%d",j); break; } } printf("\n");

}

主函数

int main() { List la,lb; initlist(&la); initlist(&lb); //调用输入函数 input(la,lb); //调用输出函数 mergelist(la,lb); //输出 //调用连接函数 connect(la,lb);

return 0;

}

示例

最新回复(0)