Problem1913--【高级语言程序设计】12.4 图书信息管理

1913: 【高级语言程序设计】12.4 图书信息管理

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 1  Solved: 1
[Submit] [Status] [Web Board] [Creator:]

Description

请编程实现图书信息管理系统,采用如下的结构体类型定义创建单向链表保存图书的编号和书名等信息:

  1. struct book
  2. {
  3. char ID[10]; //图书编号
  4. char name[20]; //书名
  5. struct book *next;
  6. };

然后,采用单向链表编程完成以下功能: (1)创建单向链表并存储图书信息,以空格为分隔符输入ID和 name,当 ID 为 0 时表示链表创建结束,并输出创建后的链表信息。 (2)删除某一编号的图书,并输出删除节点后的链表信息。 (3)释放链表所占的内存。

Input

输入图书的编号和书名; 输入要删除图书的编号。

Output

 创建的链表; 删除后的链表。

Sample Input Copy

01 c
02 c++
03 java
0  0
01

Sample Output Copy

创建的链表:
01,c
02,c++
03,java
删除后的链表:
02,c++
03,java

HINT

为了完成本关任务,你需要掌握:

  1. 单向链表;
  2. 算法思想。

单向链表

线性结构的链式存储也称为链表,相比于顺序表,链表能够解决顺序表中空间资源浪费问题以及空间不足的问题。链表的每一个结点包含数据域和指针域,而每一个结点在内存中的地址是不连续的,且能适应动态变化。在数据插入和数据删除操作效率比顺序表高,但在数据查找和修改效率较低,需要遍历链表。

链表又分为: 有头链表,头节点不存数据,所以数据操作都从头节点所指的下一节点开始,就不会误操作到头节点。故更加常用。

无头链表,第一个节点就存数据,但数据操作就要判断是否是头节点,不能对头节点操作,特别像删除操作就不能对头节点进行。

算法思想

创建单向链表存储信息,编写删除节点后的链表代码,最后释放链表所占的内存。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct book
{
    //=======begin=======


    //========end========
}NODE;
struct book *CreatList(struct book *head);
NODE *DeleteNode(NODE *head, char id[]);
void PrintList(NODE *head);
void Pfree(NODE *head);
int main(void)
{
    //=======begin=======





    //========end========
}
//函数功能:创建链表
NODE *CreatList(NODE *head)
{
    //=======begin=======







    //========end========
}
//函数功能:删除节点
NODE *DeleteNode(NODE *head, char id[])
{
    //=======begin=======







    //========end========
}

//函数功能:打印链表
void PrintList(NODE *head)
{
    //=======begin=======



    //========end========
}
//函数功能:释放链表中的节点
void Pfree(NODE *head)
{
    //=======begin=======




    //========end========
}

Source/Category