1210: 基于链式存储结构的图书信息表的创建和输出c++代码
时间: 2023-12-19 17:06:43 浏览: 96
基于C++实现(控制台)链式存储结构的线性表【100010613】
以下是基于链式存储结构的图书信息表的创建和输出的C++代码:
```
#include <iostream>
using namespace std;
struct Book {
string name;
string author;
string publisher;
int year;
Book *next;
};
void create(Book *&head) {
head = new Book;
cout << "请输入书名:";
cin >> head->name;
cout << "请输入作者:";
cin >> head->author;
cout << "请输入出版社:";
cin >> head->publisher;
cout << "请输入出版年份:";
cin >> head->year;
head->next = nullptr;
Book *p = head;
char choice;
do {
p->next = new Book;
p = p->next;
cout << "请输入书名:";
cin >> p->name;
cout << "请输入作者:";
cin >> p->author;
cout << "请输入出版社:";
cin >> p->publisher;
cout << "请输入出版年份:";
cin >> p->year;
p->next = nullptr;
cout << "是否继续输入?(y/n)";
cin >> choice;
} while (choice == 'y' || choice == 'Y');
}
void output(Book *head) {
if (head == nullptr) {
cout << "链表为空!" << endl;
return;
}
Book *p = head;
cout << "图书信息表如下:" << endl;
cout << "书名\t作者\t出版社\t出版年份" << endl;
while (p != nullptr) {
cout << p->name << "\t" << p->author << "\t" << p->publisher << "\t" << p->year << endl;
p = p->next;
}
}
int main() {
Book *head = nullptr;
create(head);
output(head);
return 0;
}
```
在主函数中,首先定义一个指向链表头结点的指针`head`,然后调用`create`函数来创建链表,最后调用`output`函数来输出链表中的图书信息。在`create`函数中,先创建头结点,然后让指针`p`指向头结点,使用`do-while`循环来不断输入图书信息并创建新节点,将指针`p`指向新节点,直到用户选择不再输入为止。在`output`函数中,先检查链表是否为空,如果是则输出提示信息,否则使用指针`p`遍历链表并输出每个节点的图书信息。
阅读全文