关键字索引表

为某本书建立一个关键字索引表。首先建立一个单链表,有26个结点,每个结点分别代表字母a,b,c,...,x,y,z。每个字母结点又指向以该字母开头的关键字的链表,该链表以字母顺序为序。如图所示:(字母链表,即蓝色垂直方向链表可以用结构体数组代替;每个字母结点所带的链表,即水平方向红色链接的表,可以根据需要增加一个头结点)

关键字索引表

输入一个单词,比如“cat”,程序从head所指向的结点‘a’开始,根据链接(蓝色箭头)依序找到‘c’,再从‘c’结点根据链接(红色箭头)依序查找“cat”。如果找到与之一致的单词,则输出该单词及所在的页码,否则输出“Not found such a word.”,然后输入页码值,将cat这个单词插入到红色链表的适当位置。如果输入@a,则输出全部以a为首的关键字及对应页码,如果没有以该字母为首的关键字,则输出“Not found any vocabularies.”,其他字母以此类推。输入@@,则程序结束。 第一个输入输出样例,在运行时的实际界面如下图:

关键字索引表

即:

关键字索引表

函数接口定义:

不限定
 

裁判测试程序样例:

在这里给出函数被调用进行测试的例子。例如:
#include <stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct KeyWord{
  char word[20];               //关键字
  int page;                    //所在页码
  struct KeyWord * next;       //指向同一个字母开头的且符合字母顺序的下一个关键字 
}KW;

typedef struct Letter{
  char letter;                  //字母
  KW * kwp;                     //指向以该字母开始的按字母顺序的第一个关键字
  struct Letter * next;         //指向按字母顺序的下一个字母
}LETTER;



/* 请在这里填写答案 */
 

输入样例:

在这里给出一组输入。例如:

able
12
as
15
and
8
@a
@b
and
@@
 

输出样例:

在这里给出相应的输出。例如:

Not found such a word.
Not found such a word.
Not found such a word.
able 12
and 8
as 15
Not found any vocabularies.
and 8
 

输入样例:

在这里给出一组输入。例如:

cat
20
able
12
can
5
cell
99
close
16
as
15
and
8
@a
@b
@c
cat
@@
 

输出样例:

在这里给出相应的输出。例如:

Not found such a word.
Not found such a word.
Not found such a word.
Not found such a word.
Not found such a word.
Not found such a word.
Not found such a word.
able 12
and 8
as 15
Not found any vocabularies.
can 5
cat 20
cell 99
close 16
cat 20

关键字索引表

上一篇:h5底部输入框被键盘遮挡问题


下一篇:nginx配置