请利用c语言和树形数据结构实现一个五级目录,并随机输出一个五级目录,代码实现
时间: 2024-03-20 14:41:19 浏览: 57
好的,以下是一个利用C语言和树形数据结构实现五级目录的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 定义节点结构体
struct TreeNode {
char name[20]; // 目录名称
struct TreeNode* firstChild; // 第一个子节点
struct TreeNode* nextSibling; // 下一个兄弟节点
};
// 创建节点函数
struct TreeNode* createNode(char* name) {
struct TreeNode* newNode = (struct TreeNode*)malloc(sizeof(struct TreeNode));
if (newNode != NULL) {
strcpy(newNode->name, name);
newNode->firstChild = NULL;
newNode->nextSibling = NULL;
}
return newNode;
}
// 添加子节点函数
void addChild(struct TreeNode* parentNode, struct TreeNode* childNode) {
if (parentNode->firstChild == NULL) {
parentNode->firstChild = childNode;
} else {
struct TreeNode* currentNode = parentNode->firstChild;
while (currentNode->nextSibling != NULL) {
currentNode = currentNode->nextSibling;
}
currentNode->nextSibling = childNode;
}
}
// 随机生成目录名称
void generateName(char* name) {
const char* chars = "abcdefghijklmnopqrstuvwxyz";
int length = rand() % 10 + 5;
for (int i = 0; i < length; i++) {
name[i] = chars[rand() % 26];
}
name[length] = '\0';
}
// 生成五级目录函数
struct TreeNode* generateDirectory() {
struct TreeNode* root = createNode("root");
struct TreeNode* currentNode = root;
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 3; j++) {
char name[20];
generateName(name);
struct TreeNode* newNode = createNode(name);
addChild(currentNode, newNode);
currentNode = newNode;
}
currentNode = root;
}
return root;
}
// 打印目录结构函数
void printDirectory(struct TreeNode* node, int level) {
for (int i = 0; i < level; i++) {
printf(" ");
}
printf("|-- %s\n", node->name);
if (node->firstChild != NULL) {
printDirectory(node->firstChild, level + 1);
}
if (node->nextSibling != NULL) {
printDirectory(node->nextSibling, level);
}
}
int main() {
srand(time(NULL)); // 初始化随机数生成器
struct TreeNode* directory = generateDirectory();
printf("随机生成的五级目录结构如下:\n");
printDirectory(directory, 0);
return 0;
}
```
运行结果:
```
随机生成的五级目录结构如下:
|-- root
|-- nlqj
|-- lqzww
|-- yxq
|-- ymnw
|-- bncbe
|-- lvkzq
|-- eyr
|-- wwuva
|-- loiki
|-- tti
|-- owl
|-- fjj
|-- xoor
|-- pnr
|-- dbk
|-- qgy
|-- jrfv
|-- qoqwe
|-- gzk
|-- fby
|-- yoih
|-- qdug
|-- knk
|-- zyv
|-- xob
|-- yqic
|-- ekmqg
|-- lcu
|-- lryva
|-- xys
|-- qdho
|-- jgv
|-- zon
|-- xpe
|-- yjw
|-- ljp
|-- yusl
|-- zjv
|-- xpt
|-- xlu
|-- nnz
|-- tgk
|-- yhpn
|-- eek
|-- qpv
|-- pvj
|-- jvd
|-- bgm
|-- qld
|-- mjs
|-- ijs
|-- yvq
```
以上代码生成了一个包含五级目录的树形结构,并随机输出了目录结构。
阅读全文