void Insert(book*h)//插入(头插法) { book*p; 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 = h->next; h->next = p; }
时间: 2023-10-20 17:40:08 浏览: 89
这段代码是用头插法实现链表的插入操作,其中book是一个结构体类型,包含了date和next两个成员变量。date是另一个结构体类型,包含了书的ISBN、书名、作者、出版社和价格等信息。next是一个指针类型,指向下一个节点。
在函数中,首先通过malloc函数动态分配了一个book类型的指针p,然后让用户输入书的信息,并将这些信息存储在p的date成员变量中。接着将p插入到链表中,具体做法是将p的next指针指向头节点的下一个节点,再将头节点的next指针指向p,这样就完成了插入操作。
需要注意的是,该函数中没有对用户输入的内容进行任何的检查和过滤,因此存在输入非法数据导致程序崩溃的风险。建议在实际使用中加入相应的输入检查和异常处理机制。
相关问题
void color(int c) { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),c);//颜色设置 } void Insert(book*h)//插入(头插法) { book*p; 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 = h->next; h->next = p; }
这段代码是用C语言实现的链表插入操作,其中book是一个结构体类型,包含了书籍的ISBN、书名、作者、出版社和价格等信息。Insert函数是用来向链表中插入一本书的,使用的是头插法。当插入一本新书时,它会在链表的头部插入一个新的节点,将新节点的next指针指向原来的头节点,从而实现链表的更新。color函数是用来设置控制台输出的文本颜色。
void Insert(book*h) //添加图书(运用到单链表的前插法) { book*p; p = (book*)malloc(sizeof(book)); //动态内存分配 printf("IBSN:"); scanf("%s", &p->date.ISBN); //添加图书的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的数据域 p->next = h->next; //将新结点*p插入到头结点之后 h->next = p; }
这段代码是控制台图书管理系统中的添加图书函数。它会要求用户输入新的图书信息,然后将该图书插入到图书链表的头部。
具体来说,这个函数会定义一个指向链表头结点的指针 `h`,并动态分配一个新的图书结点 `p`。然后,它会要求用户分别输入图书的 ISBN 号、书名、作者、出版社和价格等信息,并将这些信息存储到结点 `p` 中。接着,它将结点 `p` 插入到链表头部,并将头指针 `h` 指向新的结点 `p`。
需要注意的是,这个函数中使用了动态内存分配函数 `malloc` 来分配新的结点内存。由于本函数会修改链表结构,因此它需要传入一个指向链表头结点的指针 `h`。
阅读全文