python_LRU 前缀树

本文介绍了如何使用Python实现LRU缓存淘汰算法和基于链表法解决冲突的散列表。此外,还探讨了如何构建一个只包含26个英文字母的Trie树以及朴素的字符串匹配算法的C语言实现。
摘要由CSDN通过智能技术生成

Task4

【散列表(哈希表)】

  • 实现一个基于链表法解决冲突问题的散列表
  • 实现一个 LRU 缓存淘汰算法

【字符串】

  • 实现一个字符集,只包含 a~z 这 26 个英文字母的 Trie 树
  • 实现朴素的字符串匹配算法

链表法解决冲突(C实现):

/*链接法解决哈希散列碰撞问题*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
 
#define N 20      //数组数量 
#define Nhash 7  //哈希槽的数量 
#define N_R 200
 
//每个数据结点 
typedef struct node{
   
    int key;
    int num;
    struct node * next;
    struct node * pre;
}Node, *Pnode;
 
//哈希链表 
typedef struct Hash{
   
    Pnode link[N]; //每个链表的表头指针 
    int num;    //哈希表中现存数据 
    int len;     //哈希数组长度 
}hash,*Phash;
 
Pnode IniPnode(int key){
   
    Pnode p=(Pnode)malloc(sizeof(Node));
    p->key=key;
    p->num=1;
    p->next=NULL;
    p->pre=NULL;
}
 
//散列位置计算
int HashPos(int key){
   
    return key % Nhash;
}
 
Pnode FindNodePos(Phash h, int key){
   
    int pos=HashPos(key);
    Pnode link = h->link[pos];
    while(link->next != NULL && link->key != key){
   
        link=link->next;
    }
    return link;   
}
 
void IniHash(Phash *h, int len){
   
    int i;
    *h=(Phash)malloc(sizeof(hash));
    for(i=0;i<len;i++){
   
        (*h)->link[i] = IniPnode(-1); //头结点 
    }
    (*h)->num =0;  //总数为0 
    (*h)->len=len;
}
 
void Insert(Phash h, int
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值