家族关系查询系统课程设计采用的数据结构有树状结构和队列.树状结构采用三叉链表来实现,队列采用链式队列实现的代码
时间: 2024-02-27 20:55:26 浏览: 27
好的,以下是树状结构采用三叉链表实现和链式队列实现的代码示例:
```C++
// 树状结构采用三叉链表实现
typedef struct FamilyTreeNode {
string name; // 姓名
string gender; // 性别
int generation; // 代数
struct FamilyTreeNode* parent; // 父节点
struct FamilyTreeNode* spouse; // 配偶节点
struct FamilyTreeNode* child; // 子节点
} FamilyTreeNode;
// 链式队列实现
typedef struct QueueNode {
FamilyTreeNode* data; // 数据域
struct QueueNode* next; // 指针域
} QueueNode;
typedef struct {
QueueNode* front; // 队头指针
QueueNode* rear; // 队尾指针
} Queue;
// 初始化队列
void initQueue(Queue* queue) {
queue->front = queue->rear = (QueueNode*)malloc(sizeof(QueueNode));
queue->front->next = NULL;
}
// 判断队列是否为空
bool isQueueEmpty(Queue* queue) {
return queue->front == queue->rear;
}
// 入队操作
void enQueue(Queue* queue, FamilyTreeNode* node) {
QueueNode* newNode = (QueueNode*)malloc(sizeof(QueueNode));
newNode->data = node;
newNode->next = NULL;
queue->rear->next = newNode;
queue->rear = newNode;
}
// 出队操作
FamilyTreeNode* deQueue(Queue* queue) {
if (isQueueEmpty(queue)) {
return NULL;
}
QueueNode* nodeToDelete = queue->front->next;
FamilyTreeNode* result = nodeToDelete->data;
queue->front->next = nodeToDelete->next;
if (nodeToDelete == queue->rear) {
queue->rear = queue->front;
}
free(nodeToDelete);
return result;
}
```