c语言构建新生的学籍卡管理程序,firstNode

本文探讨了手动实现HashMap的逻辑,包括散列码计算、节点插入与更新。同时展示了链表操作的实例,如分隔链表、两两交换节点等。还涉及了数据结构和二叉搜索树的问题,讨论了如何在不改变结构的情况下恢复错误交换的节点。
摘要由CSDN通过智能技术生成

手动实现HashMap集合2021-05-05 15:01:28

/*

* 实现HashMap集合

* put(key,value)

* 1)key-> hash 散列码

* 2)hash& table.length-1 ->index

* 3)if(table[index]==null{

* 直接放

* }else{

* 找key是否存在,如果存在,新值覆盖旧值

* 如果不存在,将key,value封装为一个结点Entry直接添加

*

* }

* */

class MyHashMap

经过读题,我觉得这两个题目要表达的意思应该是完全相同的,当然也可能是我的理解出现了偏差。所以就把LRU 和 LFT 当作是一个。

当然,因为这个缘故,我把最近最久未使用的LRU当作了最久未使用写到底,到最后发现还是更像最不常用置换算法LFT一些。

下面就是代码了,用C语言链表

题目(数据结构测试)

代码:

#include

#include

#include

#define MAX 50

/*创建一个学生表结构体*/

typedef struct student_node

{

unsigned id;

char name[MAX];

char sex[MAX];

char major[MAX];

struct student_node *n

86. 分隔链表2020-09-24 19:04:06

给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。

你应当保留两个分区中每个节点的初始相对位置。

示例:

输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5

# Definition for singly-linked list.

# class ListNo

Java HashMap 源码解析2020-04-01 23:52:06

1 final int hash(Object key){

2

3 // 如果为null则返回0

4 if(key == null){

5 return 0;

6 }

7

8 // 不为null则先获取hashCode

9 int h = key.hashCode();

10

11 // hashCode 前16位维持原样,后16位为原来前16位与后16位的异

24.两两交换链表中的节点2020-03-14 22:39:55

题目描述

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例

给定 1->2->3->4, 你应该返回 2->1->4->3.

思路

迭代

链表两两位置交换,具体看代码。

代码

/**

* Definition for singly-linked

手写链表2019-10-25 18:03:38

package Method;import org.omg.Messaging.SYNC_WITH_TRANSPORT;import serial.MyBaseBean;/** * Created by joyce on 2019/10/25. */public class MyLink { private MyNode firstNode; private MyNode lastNode; private Integer lengt

二叉搜索树中的两个节点被错误地交换。

请在不改变其结构的情况下,恢复这棵树。

示例 1:

输入: [1,3,null,null,2]

1

/

3

\

2

输出: [3,1,null,null,2]

3

/

1

\

2

示例 2:

输入: [3,1,4,null,null,2]

3

/ \

1   4

/

2

题目链接 : https://leetcode-cn.com/problems/recover-binary-search-tree/

题目描述:

二叉搜索树中的两个节点被错误地交换。

请在不改变其结构的情况下,恢复这棵树。

示例:

示例 1:

输入: [1,3,null,null,2]

1

/

3

\

2

输出: [3,1,null,null,2]

3

/

1

\

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值