功能:使用链表来表示集合,完成集合的交、并、差等操作。
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define max 10//数组中存放的元素的最大值
typedef struct LNode {
int data;//存放数值
struct LNode *next;//指向下一结点
}LinkNode;
void CreateListF(LinkNode *&L, int a[], int n) {
//头插法建立单链表
LinkNode *s;
L = (LinkNode *)malloc(sizeof(LinkNode));
L->next = NULL;
for (int i = 0; i<n; i++) {
s = (LinkNode *)malloc(sizeof(LinkNode));
s->data = a[i];
s->next = L->next;
L->next = s;
}
}
void CreateListR(LinkNode *&L, int a[], int n) {
//尾插法建立单链表
LinkNode *s, *r;
L = (LinkNode *)malloc(sizeof(LinkNode));
L->next = NULL;
r = L;
for (int i = 0; i<n; i++) {
s = (LinkNode *)malloc(sizeof(LinkNode));
s->data = a[i];
r->next = s;
r = s;
}
r->next = NULL;
}
void InitList(LinkNode *&L) {
//初始化线性表
L = (LinkNode *)malloc(sizeof(LinkNode));
L->next = NULL;
}
void DestroyList(LinkNode *&L) {
//销毁线性表
LinkNode *pre = L, *p = pre->next;
while (p != NULL) {
free(pre);
pre = p;
p = pre->next;
}
free(pre);
}
bool ListEmpty(LinkNode *L) {
//判断线性表是否为空表
return (L->next == NULL);
}
int ListLength(LinkNode *L) {
//求线性表长度
int i = 0;
LinkNode *p = L;
while (p->next != NULL) {
i++;
p = p->next;
}
return (i);
}
void DispList(LinkNode *L) {
//输出线性表
LinkNode *p = L->next;
while (p != NULL)