我们采用仅有尾指针的带附加头结点的循环链表来表示集合。
定义如下集合(循环链表)类型。
typedef struct
{
int cardinal;
NODE *tail;
} LSET;
说明:cardinal 为集合的基数,tail 为循环链表的尾指针。
请编写函数,创建集合。
函数原型
void LSetCreate(LSET *set);
说明:参数 set 是指示有序集合(循环链表)的指针。函数完成对集合(循环链表)的初始化:创建附加头结点,构造环链,将集合基数置为 0。
打开“有序集”项目,创建有序集的两个文件“LSet.h”和“LSet.c”。在“LSet.h”中声明有序集类型和相关函数,在“LSet.c”中编写相关函数。
LSet.h
#ifndef _LSet_h_
#define _LSet_h_
#include "Node.h"
typedef struct
{
int cardinal;
NODE *tail;
} LSET;
void LSetCreate(LSET *set);
#endif
LSet.c
#include <stdio.h>
#include <stdlib.h>
#include "LSet.h"
/* 你提交的代码将被嵌在这里 */
打开“main.c”,修改主函数进行测试。
main.c
#include <stdio.h>
#include "LSet.h"
int main()
{
LSET a;
LSetCreate(&a);
printf("%d\n", a.cardinal);
if (a.tail == a.tail->next)
{
puts("Yes");
}
else
{
puts("No");
}
free(a.tail);
a.tail = NULL;
return 0;
}
输入样例
注:无输入。
输出样例
0
Yes