用C++语言建立一个单向链表,每个节点都是书本这个类的对象,包括:编号ID、书名BookName、作者Author、出版社Publisher。实现简单的图书的管理功能,即实现该链表的数据显示、插入数据、删除数据等功能。
时间: 2023-04-12 07:00:41 浏览: 151
好的,这是一个编程类的问题,我可以回答。以下是用C语言建立单向链表的代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义书本类
typedef struct Book {
int ID;
char BookName[50];
char Author[50];
char Publisher[50];
struct Book *next;
} Book;
// 创建链表头
Book *head = NULL;
// 插入数据
void insert(int ID, char BookName[], char Author[], char Publisher[]) {
Book *new_book = (Book*)malloc(sizeof(Book));
new_book->ID = ID;
strcpy(new_book->BookName, BookName);
strcpy(new_book->Author, Author);
strcpy(new_book->Publisher, Publisher);
new_book->next = NULL;
if (head == NULL) {
head = new_book;
} else {
Book *temp = head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = new_book;
}
}
// 删除数据
void delete(int ID) {
Book *temp = head;
Book *prev = NULL;
while (temp != NULL && temp->ID != ID) {
prev = temp;
temp = temp->next;
}
if (temp == NULL) {
printf("Book with ID %d not found\n", ID);
} else if (prev == NULL) {
head = temp->next;
free(temp);
} else {
prev->next = temp->next;
free(temp);
}
}
// 显示数据
void display() {
Book *temp = head;
while (temp != NULL) {
printf("ID: %d\n", temp->ID);
printf("Book Name: %s\n", temp->BookName);
printf("Author: %s\n", temp->Author);
printf("Publisher: %s\n", temp->Publisher);
printf("\n");
temp = temp->next;
}
}
// 主函数
int main() {
insert(1, "The Great Gatsby", "F. Scott Fitzgerald", "Scribner");
insert(2, "To Kill a Mockingbird", "Harper Lee", "J. B. Lippincott & Co.");
insert(3, "1984", "George Orwell", "Secker & Warburg");
display();
delete(2);
display();
return 0;
}
```
这个程序可以创建一个单向链表,每个节点都是书本这个类的对象,包括编号ID、书名BookName、作者Author、出版社Publisher。它还实现了简单的图书管理功能,包括插入数据、删除数据和显示数据。
阅读全文