books* creat() { books* h; books* head; books* p1, * p2; int n = 0; int w; p1=(books*)malloc(LEN); printf("\tt\t我们先创建图书表\n\n"); printf("请输入序列号:"); scanf("%d", &p1->id); printf("请输入年份:"); scanf("%d", &p1->year); printf("请输入作者:"); scanf("%s", &p1->author); printf("请输入书名:"); scanf("%s", &p1->name); head = p1; head->next = NULL; printf("\n\n请按下面数字选择:\n\n"); printf(" 1.继续 2.结束"); printf("\n请选择:"); scanf("%d", &w); p2 = head; while (w == 1) { p1 = (books*)malloc(LEN); printf("请输入序列号:"); scanf("%d", &p1->id); printf("请输入日期:"); scanf("%d", &p1->year); printf("请输入作者:"); scanf("%s", &p1->author); printf("请输入书名:"); scanf("%s", &p1->name); p2->next = p1; p1->next = NULL; p2 = p2->next; printf("\n\n请按下面数字选择:\n\n"); printf(" 1.继续 2.结束"); printf("\n请选择:\n"); scanf("%d", &w); } return head; }要怎么删除第一本书?
时间: 2023-08-03 18:02:38 浏览: 74
链表的创建删除
要删除第一本书,需要进行以下操作:
1. 定义一个临时指针变量temp,将其指向头结点的下一个节点。
2. 释放头结点内存空间,即调用free(head)。
3. 将头结点指针head指向temp,即head = temp。
4. 返回头结点指针head。
以下是修改后的代码:
```
books* delete_first_book(books* head) {
if (head == NULL) {
printf("空链表,无法删除!\n");
return head;
}
books* temp = head->next;
free(head);
head = temp;
return head;
}
```
调用该函数即可删除第一本书,如下所示:
```
head = delete_first_book(head);
```
阅读全文