用链表实现索引单词表

【12.8-7】

编写一个函数,把一个新单词插入到问题7所描述的索引表中。函数接受两个参数,一个指向list指针的指针和一个字符串,该字符串假定包含单个单词,如果这个单词原先并未存在索引表中,它应该复制一块动态分配的节点并插入到这个索引表中,如果成功插入返回真,如果该字符原先已经存在于索引表中,或字符串不是以字符开头或其他错误返回假。函数应该维护一个一级链表,节点的排序以字母为序,其余的二级链表则以单词为序排列。

  • 第一步构建一个索引列表:
typedef struct WORD {
    struct WORD *next;

    char *word;
} Word;

typedef struct LIST {
    struct LIST *next;
    Word *word_list;

    char letter;
} List;


//插入索引链表节点函数
List *insert_list(List *list, char ch) {
    List *node = (List *)malloc(sizeof(List));
    if(node == NULL) {
        return NULL;
    }

    node->letter = ch;
    node->next = NULL;
    node->word_list = NULL;

    if(list == NULL) {
        list = node;
    } else {
        List *this = list;
        //找到尾部
        printf("Looking for a location to insert:\n");
        printf("%c ", this->letter);
        while(this->next != NULL) {
            this = this->next;
            printf("%c ", this->letter);
        }
        printf("\n");
        //插入尾部
        this->next = node;
    }
    printf("insert [%c]\n", node->
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值