20251101
This commit is contained in:
@@ -96,8 +96,8 @@ int PrintList(LinkList L)
|
||||
int main()
|
||||
{
|
||||
LinkList bss1, bss2, bss3;
|
||||
int A[] = { 958,599,9485,95626,989923 };
|
||||
int B[] = { 3155,78,9623,7265,98630,983266 };
|
||||
int A[] = { 253,342,465,586,678 };
|
||||
int B[] = { 787,895,996,1023,2096,3323 };
|
||||
CreatList(bss1, 5, A);
|
||||
CreatList(bss2, 6, B);
|
||||
printf("第一个链表: \n");
|
||||
|
||||
112
CPP2/作业二.cpp
Normal file
112
CPP2/作业二.cpp
Normal file
@@ -0,0 +1,112 @@
|
||||
#include<stdio.h>
|
||||
#include<stdlib.h>
|
||||
|
||||
#define ElemType int
|
||||
#define OK 1
|
||||
#define OVERFLOW 0
|
||||
|
||||
// 链表定义
|
||||
typedef struct LNode{
|
||||
ElemType data;
|
||||
struct LNode* next;
|
||||
} LNode, * LinkList;
|
||||
|
||||
// 初始化链表
|
||||
int InitList(LinkList &L){
|
||||
L = (LNode*)malloc(sizeof(LNode));
|
||||
if (!L) return OVERFLOW;
|
||||
L->next = NULL;
|
||||
return OK;
|
||||
}
|
||||
|
||||
// 生成新节点
|
||||
LNode* MakeNode(ElemType e) {
|
||||
LNode* bss;
|
||||
bss = (LNode*)malloc(sizeof(LNode));
|
||||
if (bss != NULL) {
|
||||
bss->data = e;
|
||||
bss->next = NULL;
|
||||
}
|
||||
return bss;
|
||||
}
|
||||
|
||||
// 插入节点
|
||||
int Insert(LinkList &L, LNode* s){
|
||||
if (!L) return OVERFLOW;
|
||||
s->next = L->next;
|
||||
L->next = s;
|
||||
return OK;
|
||||
}
|
||||
|
||||
// 创建链表
|
||||
int CreatList(LinkList& L, int n, ElemType A[]){
|
||||
LNode* p, * q;
|
||||
int i;
|
||||
if (!InitList(L)) return OVERFLOW;
|
||||
p = L;
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
q = MakeNode(A[i]);
|
||||
Insert(p, q);
|
||||
p = q;
|
||||
}
|
||||
return OK;
|
||||
}
|
||||
|
||||
// 合并链表
|
||||
int MergeList(LinkList La, LinkList Lb, LinkList& Lc)
|
||||
{
|
||||
LNode* pa, * pb, * pc;
|
||||
pa = La->next;
|
||||
pb = Lb->next;
|
||||
if (!InitList(Lc)) return OVERFLOW;
|
||||
pc = Lc;
|
||||
while (pa && pb)
|
||||
{
|
||||
if (pa->data <= pb->data)
|
||||
{
|
||||
pc->next = pa;
|
||||
pc = pa;
|
||||
pa = pa->next;
|
||||
}
|
||||
else
|
||||
{
|
||||
pc->next = pb;
|
||||
pc = pb;
|
||||
pb = pb->next;
|
||||
}
|
||||
}
|
||||
pc->next = pa ? pa : pb;
|
||||
return OK;
|
||||
}
|
||||
|
||||
// 打印链表
|
||||
int PrintList(LinkList L)
|
||||
{
|
||||
LNode* p = L->next;
|
||||
while (p)
|
||||
{
|
||||
printf("%d ", p->data);
|
||||
p = p->next;
|
||||
}
|
||||
printf("\n");
|
||||
return OK;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
LinkList bss1, bss2, bss3;
|
||||
int A[] = { 253,342,465,586,678 };
|
||||
int B[] = { 787,895,996,1023,2096,3323 };
|
||||
CreatList(bss1, 5, A);
|
||||
CreatList(bss2, 6, B);
|
||||
printf("第一个链表: \n");
|
||||
PrintList(bss1);
|
||||
printf("第二个链表: \n");
|
||||
PrintList(bss2);
|
||||
MergeList(bss1, bss2, bss3);
|
||||
printf("合并后的链表: \n");
|
||||
PrintList(bss3);
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user