C语言图书数据加载函数 - 时间复杂度分析及流程图
C语言图书数据加载函数 - 时间复杂度分析及流程图
void loadBookData() {
FILE *file = fopen('book_storage.txt', 'r');
if (file == NULL) {
return;
}
while (!feof(file)) {
BookNode *newNode = (BookNode *)malloc(sizeof(BookNode));
fscanf(file, "%s", newNode->bookCode);
fscanf(file, "%s", newNode->bookName);
fscanf(file, "%s", newNode->author);
fscanf(file, "%s", newNode->publisher);
fscanf(file, "%s", newNode->bookkind);
fscanf(file, "%s", newNode->bookkinds);
fscanf(file, "%d", &newNode->quantity);
fscanf(file, "%d", &newNode->borrowed);
newNode->next = NULL;
if (head == NULL) {
head = newNode;
} else {
BookNode *current = head;
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
}
}
fclose(file);
}
时间复杂度
该函数的时间复杂度为 O(n),其中 n 为文件中书籍的数量。这是因为函数需要遍历文件中的所有书籍,并将它们添加到链表中。
流程图
- 打开文件 'book_storage.txt'。
- 如果文件打开失败,返回。
- 创建一个指向文件的指针 file。
- 创建一个空的链表头指针 head。
- 进入循环,直到文件的末尾。
- 在堆上分配一个新的 BookNode 节点 newNode。
- 从文件中读取 newNode 的 bookCode、bookName、author、publisher、bookkind、bookkinds、quantity 和 borrowed。
- 将 newNode 的 next 指针设置为 NULL。
- 如果 head 为空,将 head 指向 newNode。
- 否则,创建一个指向链表头的指针 current,并将 current 移动到链表的末尾。
- 将 current 的 next 指针指向 newNode。
- 关闭文件。
- 返回。
该代码示例展示了使用 C 语言从文本文件加载图书数据并构建链表的方法,并分析了函数的时间复杂度。附带详细的流程图解释,帮助理解代码逻辑。
原文地址: https://www.cveoy.top/t/topic/fx8b 著作权归作者所有。请勿转载和采集!