求两道数据结构算法

来源:百度知道 编辑:UC知道 时间:2024/07/04 01:53:23
1.设有两个带点结点的单链表A和B,链表中结点的数据域为data(没为整型),指针域为next。请用C语言函数形式写出将表A和B合并为一个单链表L的算法Union(A,B,L)(若A和B中有数据值相同的结点,只保留其中一个)
2.编写算法,实现串的基本操作Strcompare(S,T)
谢谢了

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

//-----------线性表的单链表存储结构-------------
typedef int ElemType;
typedef struct Node{
ElemType data;
struct Node *next;
} *LNode, *LinkList;
//----------线性表的单链表基本操作------------
LinkList InitList(void); //构造一个空的线性表
LNode NewLNode(ElemType X);//构造一个数据域为X的新结点
LNode FindPrefious(ElemType X, LinkList L);
//初始条件:线性表L已存在。 操作结果:在线性表L中寻找值为X的结点,若找到则返回该结点的前驱,否则返回NULL。
void ListDelete(LNode Pre);//初始条件:线性表L中结点P已找到。 操作结果:删除该结点。
//初始条件:线性表L中结点P已找到,新结点S已构造。 操作结果:在该结点之前插入新结点X。
void ListInsert(LNode Pre, LNode S);
LinkList CreateList(ElemType a[], ElemType len); //用来构造一个链表
void Union(LinkList A, LinkList B, LinkList * L); //合并两个串
int Strcompare(LinkList S, LinkList T); //比较两个串的大小
void PrintLink(LinkList L); //输出链表

int main(void)
{
LNode LA, LB, L;
ElemType A[5]={1,2,3,4,5}, B[8]={3,4,5,