/*
线性表的合并
*/
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <stdbool.h>
typedef int ElemType;
typedef struct Lnode{
ElemType data;
struct Lnode * next;
}LNode, * LinkList;
/*
单链表的建立:尾插法
*/
LinkList CreateList_R(){
LinkList L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
int x;
LinkList p, r = L;
scanf("%d", &x);
while(x != 9999){
p = (LinkList)malloc(sizeof(LNode));
p->data = x;
p->next = NULL;
r->next = p;
r = p;
scanf("%d", &x);
}
return L;
}
/*
求单链表L的长度
*/
int ListLength_L(LinkList L){
int len = 0;
LinkList p;
p = L->next;
while(p){
p = p->next;
len++;
}
return len;
}
/*
取值:取单链表中第i个元素的内容
*/
int GetElem_L(LinkList L, int i, ElemType * e){
LinkList p;
p = L->next;
int j = 1;
while(p && i > j){
p = p->next;
j++;
}
if(!p || j > i ) return 0;
*e = p->data;
return 1;
}
/*
查找:按值查找:根据指定数据获取数据所在位置(序号)
*/
int LocateElem_L2(LinkList L, ElemType e){
LinkList p;
p = L->next;
int j = 1;
while(p && p->data != e){
p = p->next;
j++;
}
if(p)return j;
else return 0;
}
/*
插入:在第i后结点插入新结点
*/
int ListInsert_L(LinkList L, int i, ElemType e){
LinkList p;
p = L;
int j = 0;
while(p && i-1 > j){
p = p->next;
j++;
}
if(!p || j > i - 1) return -1;
LinkList s = (LinkList)malloc(sizeof(LNode));
s->data = e;
s->next = p->next;
p->next = s;
return 1;
}
/*
线性表的合并
*/
void Union(LinkList La, LinkList Lb){
int La_len = ListLength_L(La);
int Lb_len = ListLength_L(Lb);
int i;
int e;
for(i = 1; i <= Lb_len; i++){
GetElem_L(Lb, i, &e);
if(!LocateElem_L2(La, e)){
ListInsert_L(La, La_len++, e);
}
}
}
/*
链表的遍历
*/
void traverse_list(LinkList L){
LinkList p;
p = L->next;
while(p){
printf("%d ", p->data);
p = p->next;
}
printf("\n");
return;
}
int main(){
//第一个单链表La
printf("--------------创建第一个单链表------------\n");
LinkList La = CreateList_R();
//第二个单链表La
printf("--------------创建第二个单链表------------\n");
LinkList Lb = CreateList_R();
Union(La, Lb);
traverse_list(La);
return 0;
}
线性表的合并
转载
我亦无他,惟手熟尔
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
1.链式存储的线性表——C语言实现
本文是作者学习数据结构过程中在单链表基本运算代码实现时遇到问题并解决问题后的结果
单链表 基本运算 存储结构 代码实现 -
【数据结构】详细剖析线性表
【数据结构】第二章——线性表(9)总结了线性表的基本知识点,并对循序表与链表进行了比较
数据结构 C语言 线性表 顺序表 链表 -
线性表的基本操作(C语言实现)
文章目录这里使用的工具是DEV C++可以借鉴一下实现效果顺序存储代码实现链式存
c语言 线性表 i++ sql -
C语言实现ArrayList (线性表顺序存储结构)
数据结构C/C++实现,ArrayList ,动态数组,线性表顺序存储
数据结构C/C++实现ArrayLis -
线性表的顺序表示(C语言实现)
#include#include
线性表 #define i++ c++ #include -
java线性表合并 线性表合并实验报告
一、实验目的:1、 复习c/c++语言,并实现简单的算法设计。2、 掌握结构体类型/类的定义方法以及自定义数据类型使用。3、 掌握函数的设计和调用。4、 学会理
java线性表合并 赋值 抽象数据类型 基本操作