Files
Course/DataStructure/test1/实验一.cpp
2025-11-07 18:39:29 +08:00

229 lines
6.9 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct LNode
{
int data; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct LNode *next; // ָ<><D6B8><EFBFBD><EFBFBD>
} LNode, *LinkList; // LinkListΪָ<CEAA><D6B8>LNode<64><65><EFBFBD>͵<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void chushihua(LinkList &L, LinkList &M, LinkList &N, LinkList &H) // <20><>ʼ<EFBFBD><CABC><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>L<EFBFBD><4C>M<EFBFBD><4D>N<EFBFBD><4E>H
{
// todo list
L = (LinkList)malloc(sizeof(LNode));
M = (LinkList)malloc(sizeof(LNode));
N = (LinkList)malloc(sizeof(LNode));
H = (LinkList)malloc(sizeof(LNode));
L->next = NULL; // ֱ<><D6B1><EFBFBD>ÿգ<C3BF><D5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
M->next = NULL;
N->next = NULL;
H->next = NULL;
}
void Emp(LinkList &L) // <20>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>L<EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD>ձ<EFBFBD>
{
// if (//todo list)
if (L->next == NULL)
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ձ<EFBFBD><EFBFBD><EFBFBD>\n");
else
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ǿձ<EFBFBD><EFBFBD><EFBFBD>\n");
}
void Length(LinkList L)
{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>L<EFBFBD><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>
LNode *p; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>p
p = L->next; // pָ<70><D6B8><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>(<28><>Ԫ<EFBFBD><D4AA><EFBFBD>)
int length = 0;
// todo list //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>
while (p != NULL)
{
length++;
p = p->next;
}
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>%d\n", length);
}
// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>L<EFBFBD><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
void xianshi(LinkList &L)
{
LNode *p; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>p //LinkList p;
p = L;
while (p->next != NULL)
{
printf("%4d", p->next->data);
p = p->next;
}
printf("\n"); // <20><><EFBFBD>ӻ<EFBFBD><D3BB>У<EFBFBD><D0A3><EFBFBD><EFBFBD>ڲ鿴
}
// 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>L<EFBFBD>в<EFBFBD><D0B2><EFBFBD>n<EFBFBD><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD>С<EFBFBD><D0A1><EFBFBD>󣩡<EFBFBD>
void charu_1(LinkList &L, int n)
{
LNode *q, *p;
for (int i = 1; i <= n; i++)
{
p = L; // <20><>ÿ<EFBFBD><C3BF>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD>ʼʱ<CABC><CAB1><EFBFBD><EFBFBD><70><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ڵ<EFBFBD>L
q = (LinkList)malloc(sizeof(LNode)); // Ϊ<>µĽڵ<C4BD><DAB5><EFBFBD><EFBFBD><EFBFBD>ڴ棬<DAB4><E6A3AC><EFBFBD><EFBFBD><71><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%d<><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ", i);
scanf("%d", &q->data); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><E6B4A2><71><D6B8>Ľڵ<C4BD><DAB5>data<74>ֶ<EFBFBD><D6B6><EFBFBD>
q->next = NULL; // <20><><EFBFBD>½ڵ<C2BD><DAB5>nextָ<74><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪNULL<4C><4C><EFBFBD><EFBFBD>ʾ<EFBFBD>½ڵ㵱ǰ<E3B5B1><C7B0>ָ<EFBFBD><D6B8><EFBFBD>κνڵ㡣
// <20><><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD>λ<EFBFBD><CEBB>
while (p->next != NULL && p->next->data < q->data)
{
p = p->next; // <20>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ڵ<EFBFBD>
}
// <20><><EFBFBD><EFBFBD><EFBFBD>½ڵ<C2BD>
q->next = p->next;
p->next = q;
}
}
// 2<><32><EFBFBD>ֽ⣺<D6BD><E2A3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>L<EFBFBD>е<EFBFBD>Ԫ<EFBFBD>ط<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ż<EFBFBD><C5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD><4D>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ǡ<EFBFBD>
void fenbiao(LinkList &L, LinkList &M, LinkList &N)
{
LNode *j, *o, *p, *temp;
p = L;
while (p->next != NULL)
{
temp = p->next; // <20><><EFBFBD>浱ǰ<E6B5B1>ڵ<EFBFBD>
p->next = temp->next; // <20><>ǰ<EFBFBD>ƶ<EFBFBD>p<EFBFBD><70>next<78><74><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>
if (temp->data % 2 == 0) // ż<><C5BC>Ԫ<EFBFBD>أ<EFBFBD>ǰ<EFBFBD><EFBFBD><E5B7A8>M
{
o = (LinkList)malloc(sizeof(LNode));
o->data = temp->data;
o->next = M->next;
M->next = o;
}
else // <20><><EFBFBD><EFBFBD>Ԫ<EFBFBD>أ<EFBFBD>ǰ<EFBFBD><EFBFBD><E5B7A8>N
{
j = (LinkList)malloc(sizeof(LNode));
j->data = temp->data;
j->next = N->next;
N->next = j;
}
free(temp); // <20>ͷ<EFBFBD>ԭ<EFBFBD>ڵ<EFBFBD><DAB5>ڴ<EFBFBD>
}
printf("<EFBFBD><EFBFBD><EFBFBD>Ϊ:");
xianshi(N); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>N<EFBFBD><4E>
printf("ż<EFBFBD><EFBFBD>Ϊ:");
xianshi(M); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ż<EFBFBD><C5BC>Ӧ<EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>M<EFBFBD><4D>
}
// 3<><33><EFBFBD>ϲ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD><4A>ż<EFBFBD><C5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>O<EFBFBD>ϲ<EFBFBD>Ϊһ<CEAA><D2BB><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>H<EFBFBD><48><EFBFBD>ϲ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ԫ<EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԡ<EFBFBD>
void hebiao(LinkList &J, LinkList &O, LinkList &H)
{
LNode *p, *q, *t, *m;
p = J->next; // ָ<><D6B8><EFBFBD><EFBFBD>Ԫ<EFBFBD>ڵ<EFBFBD>
q = O->next;
m = H; // m<><EFBFBD><E0B5B1>βָ<CEB2><EFBFBD><EBA3AC>ʼָ<CABC><D6B8>ͷ<EFBFBD>ڵ<EFBFBD>
// <20><><EFBFBD><48><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
H->next = NULL;
while (p != NULL && q != NULL) // <20>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ż<EFBFBD><C5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD>
{
if (p->data > q->data) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ż<EFBFBD><C5BC><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
{
t = (LinkList)malloc(sizeof(LNode));
t->data = p->data;
t->next = NULL;
m->next = t; // β<><CEB2>
m = t; // <20><><EFBFBD><EFBFBD>βָ<CEB2><D6B8>
p = p->next; // <20>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
}
else // ȡż<C8A1><C5BC>
{
t = (LinkList)malloc(sizeof(LNode));
t->data = q->data;
t->next = NULL;
m->next = t; // β<><CEB2>
m = t; // <20><><EFBFBD><EFBFBD>βָ<CEB2><D6B8>
q = q->next; // <20>ƶ<EFBFBD>ż<EFBFBD><C5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EBA3A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD>p<EFBFBD><70>
}
}
// <20><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
while (p != NULL)
{
t = (LinkList)malloc(sizeof(LNode));
t->data = p->data;
t->next = NULL;
m->next = t;
m = t;
p = p->next;
}
// <20><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD>ż<EFBFBD><C5BC><EFBFBD>ڵ<EFBFBD>
while (q != NULL)
{
t = (LinkList)malloc(sizeof(LNode));
t->data = q->data;
t->next = NULL;
m->next = t;
m = t;
q = q->next; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD>p
}
printf("<EFBFBD>Ӵ<EFBFBD>С<EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>");
xianshi(H); // <20><>ʾ<EFBFBD>ϱ<EFBFBD>H
}
int main()
{
// <20><><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD>Ϊͷ<CEAA><CDB7><EFBFBD><E3A3AC>ͷָ<CDB7><D6B8>ֱ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>
LinkList head = (LinkList)malloc(sizeof(LNode));
LinkList ji = (LinkList)malloc(sizeof(LNode));
LinkList ou = (LinkList)malloc(sizeof(LNode));
LinkList he = (LinkList)malloc(sizeof(LNode));
int choose = -1, n;
printf("*********************************************\n");
printf("********** ʵ<><CAB5>һ *******\n");
printf("*********************************************\n");
printf("********** 1.<2E><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *******\n");
printf("********** 2.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *******\n");
printf("********** 3.<2E>ֳ<EFBFBD><D6B3><EFBFBD><><C5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *******\n");
printf("********** 4.<2E>ϲ<EFBFBD><CFB2>ɵݼ<C9B5><DDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *******\n");
printf("********** 5.<2E><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *******\n");
printf("********** 6.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *******\n");
printf("********** 7.<2E>жϵ<D0B6><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA> *******\n");
printf("********** 0.<2E>˳<EFBFBD> *******\n");
printf("*********************************************\n");
while (choose)
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>\n");
scanf("%d", &choose);
switch (choose)
{
case 1:
chushihua(head, ji, ou, he);
break;
case 2:
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
scanf("%d", &n);
charu_1(head, n);
break;
case 3:
fenbiao(head, ou, ji);
break;
case 4:
hebiao(ji, ou, he);
break;
case 5:
xianshi(head);
break;
case 6:
Length(head);
break;
case 7:
Emp(head);
break;
case 0:
exit(0);
break;
}
}
}