链接表

本文介绍了链接表的概念,强调了单向链接表的特性,包括节点结构和链表的基本操作,如创建空链表、删除链表、判断是否为空、首端插入和一般插入、删除元素等。此外,还讨论了扫描、定位和遍历链表的方法,以及单链表类的实现,包括节点类和自定义异常。
摘要由CSDN通过智能技术生成

链接表把每个元素储存在一批独立的储存块里,在每个节点中显式的保存下一个节点的链接,从每个节点都可以找到与其相关的下一个节点。

单向链接表

节点为一个二元组,分别保存着元素数据和下一个节点的链接,在尾节点的链接域设置一个空链接来表示表的结束。
单链表
定义一个简单的表节点类:

class LNode:
    def __init__(self, elem, next_=None):
        self.elem = elem
        self.next = next_ 

链表基本操作

  • 创建空链表:
    只需要把相应的表头变量设置为空链接: None ,就代表没有后续元素,即为一个空表。 O(1)
  • 删除链表:
    应丢弃这个表中的所有节点,在 Python 中只需把表的指针赋值为 None ,就抛弃了所有的节点, Pytho
以下是一个简单的C语言代码示例,用于生成逆链接表: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_WORD_LEN 50 #define MAX_DOC_NAME_LEN 50 #define MAX_DOC_COUNT 100 typedef struct _DocNode { char name[MAX_DOC_NAME_LEN]; struct _DocNode* next; } DocNode; typedef struct _WordNode { char word[MAX_WORD_LEN]; DocNode* docList; struct _WordNode* next; } WordNode; WordNode* indexTable; void addToIndex(char* word, char* docName) { WordNode* currWord = indexTable; while (currWord != NULL && strcmp(currWord->word, word) != 0) { currWord = currWord->next; } if (currWord == NULL) { currWord = (WordNode*)malloc(sizeof(WordNode)); strcpy(currWord->word, word); currWord->docList = NULL; currWord->next = indexTable; indexTable = currWord; } DocNode* currDoc = currWord->docList; while (currDoc != NULL && strcmp(currDoc->name, docName) != 0) { currDoc = currDoc->next; } if (currDoc == NULL) { currDoc = (DocNode*)malloc(sizeof(DocNode)); strcpy(currDoc->name, docName); currDoc->next = currWord->docList; currWord->docList = currDoc; } } void printIndexTable() { WordNode* currWord = indexTable; while (currWord != NULL) { printf("%s: ", currWord->word); DocNode* currDoc = currWord->docList; while (currDoc != NULL) { printf("%s ", currDoc->name); currDoc = currDoc->next; } printf("\n"); currWord = currWord->next; } } int main() { indexTable = NULL; addToIndex("apple", "doc1"); addToIndex("banana", "doc1"); addToIndex("apple", "doc2"); addToIndex("orange", "doc3"); printIndexTable(); return 0; } ``` 这个示例中,我们使用了两个结构体:`WordNode`和`DocNode`。`WordNode`表示一个词语节点,包括词语本身和出现该词语的文档列表。`DocNode`表示一个文档节点,包括文档名称和下一个文档节点的指针。 `addToIndex`函数用于将一个词语和文档名称添加到逆链接表中。如果该词语在逆链接表中不存在,则创建一个新的词语节点并将其插入逆链接表中;如果该词语已经存在,则在该词语节点的文档列表中添加新的文档节点。 `printIndexTable`函数用于打印整个逆链接表的内容。 在`main`函数中,我们演示了如何使用`addToIndex`函数向逆链接表中添加数据,并使用`printIndexTable`函数打印逆链接表的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值