双向链表写图书管理系统c++代码
时间: 2024-10-27 08:05:57 浏览: 28
双向链表是一种数据结构,其中每个节点包含指向前一个节点和后一个节点的指针。在编写图书管理系统的C++代码时,可以利用这种特性来设计一个书籍节点,包括书名、作者等信息,并维护一个链表来存储所有图书。以下是一个简单的示例:
```cpp
#include <iostream>
using namespace std;
// 定义书籍节点
struct BookNode {
string title;
string author;
BookNode* prev; // 指向前一个节点
BookNode* next; // 指向后一个节点
};
class Library {
private:
BookNode* head; // 链表头
public:
// 构造函数
Library() { head = nullptr; }
// 插入新书
void insertBook(string title, string author) {
BookNode* newNode = new BookNode();
newNode->title = title;
newNode->author = author;
newNode->prev = nullptr;
newNode->next = head;
if (head != nullptr)
head->prev = newNode;
head = newNode;
}
// 删除指定书籍
void deleteBook(string title) {
BookNode* curr = head;
while (curr != nullptr) {
if (curr->title == title) {
if (curr->prev != nullptr)
curr->prev->next = curr->next;
else
head = curr->next;
if (curr->next != nullptr)
curr->next->prev = curr->prev;
delete curr;
return;
}
curr = curr->next;
}
cout << "Book not found." << endl;
}
// 打印所有书籍
void printBooks() {
BookNode* temp = head;
while (temp != nullptr) {
cout << "Title: " << temp->title << ", Author: " << temp->author << endl;
temp = temp->next;
}
}
};
int main() {
Library lib;
lib.insertBook("The Great Gatsby", "F. Scott Fitzgerald");
lib.insertBook("To Kill a Mockingbird", "Harper Lee");
lib.printBooks(); // 输出所有书籍
lib.deleteBook("The Great Gatsby");
lib.printBooks();
return 0;
}
```
在这个例子中,`Library` 类包含了插入书籍、删除书籍以及打印所有书籍的功能。注意这只是一个基础示例,实际的图书管理系统可能会更复杂,包括错误处理和搜索功能。
阅读全文