book*GreatLink() { book*h, *tail, *p; h=tail=(book*)malloc(sizeof(book)); h->next = NULL; int n = 0; printf("输入要录入书的数目:"); scanf("%d", &n); for (int i = 0; i < n; i++) { p = (book*)malloc(sizeof(book)); printf("IBSN:"); scanf("%s",&p->date.ISBN); printf("书名:"); scanf("%s",&p->date.name); printf("作者:"); scanf("%s",&p->date.writer); printf("出版社:"); scanf("%s",&p->date.ad); printf("价格:"); scanf("%s",&p->date.price); p->next = NULL; tail->next = p; tail = p; } return h;
时间: 2024-04-03 08:33:17 浏览: 95
这段代码是一个函数,函数名为 GreatLink,返回值类型为 book*。它的功能是录入图书信息,并将录入的图书信息以链表的形式连接起来,最后返回连接后的链表。
在函数内部,首先定义了一个头结点 h 和尾结点 tail,它们都是 book* 类型的指针,并且通过 malloc 函数分配了空间,使它们指向一个新的 book 类型的节点。
然后,通过 scanf 函数读取用户输入的图书数量,并使用 for 循环逐个读取每本书的信息,包括 ISBN、书名、作者、出版社和价格。每读入一本书的信息,就通过 malloc 函数为其分配空间,使它成为一个新的 book 类型的节点,并将其添加到链表的尾部。
最后,函数返回头结点 h,也就是连接后的链表的第一个节点的指针。
相关问题
void choose(book*h) { int i; int a = 1; while (a>0) { menu(); printf("请选择:"); scanf("%d",&i); switch (i) { case 1: h=GreatLink(); break; case 2: PrintLink(h); break; case 3: Insert(h); break; case 4: Search(h); break; case 5: revise(h); break; case 6: delete(h); break; case 0: printf("【退出】\n"); printf("退出成功!感谢您的使用!\n"); system("pause"); exit(0); break; default: printf("无效的命令!\n"); a = -1; break; } } }
这段代码是一个简单的控制台图书管理系统。函数 `choose` 用于提供一个菜单供用户选择,读取用户的输入并根据不同的选择调用不同的函数。具体来说,这个函数会循环打印菜单,要求用户输入选择,并根据用户的输入调用相应的函数。下面是菜单的选项和对应的功能:
1. 创建图书链表:调用 `GreatLink()` 函数创建一个图书链表,并将其返回。
2. 输出图书链表:调用 `PrintLink(h)` 函数,打印当前的图书链表。
3. 插入图书:调用 `Insert(h)` 函数,要求用户输入新的图书信息并将其插入到图书链表中。
4. 查找图书:调用 `Search(h)` 函数,要求用户输入需要查找的图书信息并在图书链表中查找。
5. 修改图书信息:调用 `revise(h)` 函数,要求用户输入需要修改的图书信息并在图书链表中进行修改。
6. 删除图书:调用 `delete(h)` 函数,要求用户输入需要删除的图书信息并将其从图书链表中删除。
0. 退出:打印退出信息并结束程序。
如果用户输入的不是菜单选项中的数字,则会提示无效的命令并退出循环。
7) void choose(book*h) { int i; int a = 1; while (a>0) { menu(); printf("请选择:"); scanf("%d",&i); switch (i) { case 1: h=GreatLink(); break; case 2: PrintLink(h); break; case 3: Insert(h); break; case 4: Search(h); break; case 5: revise(h); break; case 6: delete(h); break; case 0: printf("【退出】\n"); printf("退出成功!感谢您的使用!\n"); system("pause");//暂停,避免输出过快 exit(0); break; default: printf("无效的命令!\n"); a = -1;//跳出循环条件 break; } } }
这是一个图书管理系统的函数,具体实现了以下功能:
1. 创建一个书籍链表(GreatLink()函数);
2. 打印书籍链表(PrintLink()函数);
3. 在书籍链表中插入一本新书(Insert()函数);
4. 在书籍链表中查找一本书籍(Search()函数);
5. 修改一本书籍的信息(revise()函数);
6. 删除一本书籍(delete()函数);
7. 显示菜单,等待用户输入,根据用户输入执行相应的操作;
8. 当用户输入无效命令时,提示用户并要求重新输入。
该函数使用了switch-case语句来实现用户输入命令的判断,当用户输入无效命令时,会跳出while循环,等待用户输入有效命令。当用户输入0时,会退出程序并输出感谢信息。
阅读全文