书架adt实施c语言链表储存
时间: 2023-11-07 21:01:29 浏览: 46
书架ADT的实现可以使用链表来储存,下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Book {
char title[50];
char author[50];
struct Book *next;
} Book;
typedef struct BookShelf {
Book *head;
int size;
} BookShelf;
BookShelf* createBookShelf() {
BookShelf *bookShelf = (BookShelf*)malloc(sizeof(BookShelf));
bookShelf->head = NULL;
bookShelf->size = 0;
return bookShelf;
}
void addBook(BookShelf *bookShelf, const char *title, const char *author) {
Book *book = (Book*)malloc(sizeof(Book));
strcpy(book->title, title);
strcpy(book->author, author);
book->next = NULL;
if (bookShelf->head == NULL) {
bookShelf->head = book;
} else {
Book *current = bookShelf->head;
while (current->next != NULL) {
current = current->next;
}
current->next = book;
}
bookShelf->size++;
}
void displayBooks(BookShelf *bookShelf) {
Book *current = bookShelf->head;
while (current != NULL) {
printf("Title: %s, Author: %s\n", current->title, current->author);
current = current->next;
}
}
void destroyBookShelf(BookShelf *bookShelf) {
Book *current = bookShelf->head;
while (current != NULL) {
Book *next = current->next;
free(current);
current = next;
}
free(bookShelf);
}
int main() {
BookShelf *bookShelf = createBookShelf();
addBook(bookShelf, "Book 1", "Author 1");
addBook(bookShelf, "Book 2", "Author 2");
addBook(bookShelf, "Book 3", "Author 3");
displayBooks(bookShelf);
destroyBookShelf(bookShelf);
return 0;
}
```