#include #include #include typedef struct LNode { int data; // ������ struct LNode *next; // ָ���� } LNode, *LinkList; // LinkListΪָ��LNode���͵�ָ������ void chushihua(LinkList &L, LinkList &M, LinkList &N, LinkList &H) // ��ʼ���ĸ�����L��M��N��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; // ֱ���ÿգ������ж� M->next = NULL; N->next = NULL; H->next = NULL; } void Emp(LinkList &L) // �ж�����L�Ƿ�Ϊ�ձ� { // if (//todo list) if (L->next == NULL) printf("����Ϊ�ձ���\n"); else printf("����Ϊ�ǿձ���\n"); } void Length(LinkList L) { // �����������L������Ԫ�ظ��� LNode *p; // ������ʱ����p p = L->next; // pָ���һ�����(��Ԫ���) int length = 0; // todo list //����������,ͳ�ƽ���� while (p != NULL) { length++; p = p->next; } printf("��������Ϊ��%d\n", length); } // ��ʾ����L������Ԫ�� void xianshi(LinkList &L) { LNode *p; // ������ʱ����p //LinkList p; p = L; while (p->next != NULL) { printf("%4d", p->next->data); p = p->next; } printf("\n"); // ���ӻ��У����ڲ鿴 } // 1��������������������������L�в���n������������ʱ���������������ԣ���С���󣩡� void charu_1(LinkList &L, int n) { LNode *q, *p; for (int i = 1; i <= n; i++) { p = L; // ��ÿ��ѭ����ʼʱ����pָ��������ͷ�ڵ�L q = (LinkList)malloc(sizeof(LNode)); // Ϊ�µĽڵ�����ڴ棬����qָ������ڴ� printf("�������%d����������ֵ", i); scanf("%d", &q->data); // �������ֵ�洢��qָ��Ľڵ��data�ֶ��� q->next = NULL; // ���½ڵ��nextָ������ΪNULL����ʾ�½ڵ㵱ǰ��ָ���κνڵ㡣 // ���Ҳ���λ�� while (p->next != NULL && p->next->data < q->data) { p = p->next; // �ƶ�����һ���ڵ� } // �����½ڵ� q->next = p->next; p->next = q; } } // 2���ֽ⣺������L�е�Ԫ�ط�Ϊ������ż����������M��N�����ֱ���ʾ���ǡ� void fenbiao(LinkList &L, LinkList &M, LinkList &N) { LNode *j, *o, *p, *temp; p = L; while (p->next != NULL) { temp = p->next; // ���浱ǰ�ڵ� p->next = temp->next; // ��ǰ�ƶ�p��next����ֹ���� if (temp->data % 2 == 0) // ż��Ԫ�أ�ǰ�巨��M { o = (LinkList)malloc(sizeof(LNode)); o->data = temp->data; o->next = M->next; M->next = o; } else // ����Ԫ�أ�ǰ�巨��N { j = (LinkList)malloc(sizeof(LNode)); j->data = temp->data; j->next = N->next; N->next = j; } free(temp); // �ͷ�ԭ�ڵ��ڴ� } printf("���Ϊ:"); xianshi(N); // ����������Ӧ�ô����N�� printf("ż��Ϊ:"); xianshi(M); // ������ż��Ӧ�ô����M�� } // 3���ϲ�һ���ݼ�����������������J��ż������O�ϲ�Ϊһ���µ�����H���ϲ�ʱ����Ԫ�ص������ԡ� void hebiao(LinkList &J, LinkList &O, LinkList &H) { LNode *p, *q, *t, *m; p = J->next; // ָ����Ԫ�ڵ� q = O->next; m = H; // m�൱��βָ�룬��ʼָ��ͷ�ڵ� // ���Hԭ������ H->next = NULL; while (p != NULL && q != NULL) // �ж����ż���������ݽ�� { if (p->data > q->data) // ��������ż����ȡ���� { t = (LinkList)malloc(sizeof(LNode)); t->data = p->data; t->next = NULL; m->next = t; // β�� m = t; // ����βָ�� p = p->next; // �ƶ���������ָ�� } else // ȡż�� { t = (LinkList)malloc(sizeof(LNode)); t->data = q->data; t->next = NULL; m->next = t; // β�� m = t; // ����βָ�� q = q->next; // �ƶ�ż������ָ�루������ԭ��������ƶ���p�� } } // ����ʣ��������ڵ� while (p != NULL) { t = (LinkList)malloc(sizeof(LNode)); t->data = p->data; t->next = NULL; m->next = t; m = t; p = p->next; } // ����ʣ���ż���ڵ� while (q != NULL) { t = (LinkList)malloc(sizeof(LNode)); t->data = q->data; t->next = NULL; m->next = t; m = t; q = q->next; // ������ԭ��������ƶ���p } printf("�Ӵ�С�ĵ�����Ϊ��"); xianshi(H); // ��ʾ�ϱ�H } int main() { // �����½����Ϊͷ��㣬��ͷָ��ֱ�ָ���ͷ��� 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("********** ʵ��һ *******\n"); printf("*********************************************\n"); printf("********** 1.��ʼ�������� *******\n"); printf("********** 2.������������ *******\n"); printf("********** 3.�ֳ���/ż������ *******\n"); printf("********** 4.�ϲ��ɵݼ������� *******\n"); printf("********** 5.��ʾ������(����)���������� *******\n"); printf("********** 6.���������� *******\n"); printf("********** 7.�жϵ������Ƿ�Ϊ�� *******\n"); printf("********** 0.�˳� *******\n"); printf("*********************************************\n"); while (choose) { printf("���������ѡ���\n"); scanf("%d", &choose); switch (choose) { case 1: chushihua(head, ji, ou, he); break; case 2: printf("��������Ҫ�����������ĸ�����\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; } } }