数据结构
数据结构
CDQ0818
绝知此事要躬行
展开
-
Java哈希表的实现
文章目录实现代码实现代码class EmpNode{ public int id; public String name; public EmpNode pNext;//默认为null //构造器 public EmpNode(int id, String name){ this.id = id; this.name = name; } @Override public String toString()原创 2022-04-24 18:42:25 · 600 阅读 · 0 评论 -
LeetCode 234.回文链表
文章目录问题描述实现代码问题描述实现代码/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val;原创 2022-04-22 23:46:55 · 54 阅读 · 0 评论 -
Java单链表实现
文章目录实现代码实现代码class SingleLinkedList{ //初始化头节点 private HeroNode head = new HeroNode(0,"",""); //在链表尾部添加节点 public void add(int no , String name, String nickname){ HeroNode cur = head ; //令cur指向尾节点 while (cur.next !原创 2022-04-22 22:07:29 · 558 阅读 · 0 评论 -
Java数组实现循环队列
文章目录实现代码实现代码class CircleArrayQueue{ //成员属性: private int maxsize;//队列最大容量 private int front;//队列头,指向队头第一个元素 private int rear;//队列尾,指向队尾元素的下一个坐标 private int[] arr;//模拟队列的数组原创 2022-04-22 15:06:07 · 485 阅读 · 0 评论 -
Java数组模拟队列
文章目录实现代码实现代码class ArrayQueue{ //成员属性: private int maxsize;//队列最大容量 private int front;//队列头 private int rear;//队列尾 private int[] arr;//模拟队列的数组 //构造器 public ArrayQueue(int maxsize){ //初始化成员属性 //设置最大容量 t原创 2022-04-21 19:11:56 · 474 阅读 · 0 评论 -
稀疏数组详解
文章目录一、稀疏数组是什么?二、应用实例三、代码实现运行结果一、稀疏数组是什么?当一个数组中大部分元素是0,或为同一个值的时候,可以使用稀疏数组来保存数组。它是一个十分有效的存储结构,便于节省存储空间。二、应用实例这里有个需求,通过二维数组来模拟棋盘状态,显然此时数组中大部分元素为零,为了节省空间,可以考虑使用稀疏数组。二维数组转稀疏数组的思路是:记录数组一共有几行几列,有多少不同的值。如上图所示,二维数组为11*11,共有两个有效数据,1和2。创建稀疏数组int sparseArr[3原创 2022-04-21 15:24:02 · 638 阅读 · 0 评论 -
LeetCode 225. 用队列实现栈
问题描述解题思路用两条队列q1和q2实现一个栈。Stackpush:如果两队列均为空,则数据插入到q2队尾,否则,插入到非空队列尾部。这样的话某时刻,q1和q2必有一条队列为空。Stacktop:top非空队列的队尾。Stackpop:假如q2为非空队列,top q2并将得到的数据push到q1,然后pop,循环至q2只剩一个数据,pop它。实现代码//自定义数据类型typedef int QDataType;//队列节点typedef struct QueueNode{ QD原创 2022-04-17 18:58:44 · 261 阅读 · 0 评论 -
C语言队列的实现
系列文章目录文章目录系列文章目录队列一、队列是什么?二、队列的实现1.定义数据类型2.队列的各种接口3.初始化队列4.销毁队列5.入队6.出队7.队列是否为空8.求队列长度9.获取队头数据10.获取队尾数据总结队列提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、队列是什么?队列是一种特殊的线性表,特点是FIFO,适合用链式结构实原创 2022-04-16 20:36:04 · 1589 阅读 · 0 评论 -
LeetCode 20. 有效的括号
问题描述实现代码typedef char STDataType;typedef struct Stack{ STDataType* a; int top; int capacity;}ST,PST;void StackInit(ST* ps);void StackDestory(ST* ps);void StackPush(ST* ps,STDataType x);void StackPop(ST* ps);//取栈顶数据STDataType StackTop(ST* ps);原创 2022-04-15 23:54:04 · 309 阅读 · 0 评论 -
LeetCode 141. 环形链表
问题描述实现代码/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */bool hasCycle(struct ListNode *head) { /*快慢指针,fast一次前进两个节点,slow前进一个节点, 循环如此,若fast==NULL则无环,若fast==slow则有环*/ struct原创 2022-04-15 11:58:58 · 296 阅读 · 0 评论 -
LeetCode 83. 删除排序链表中的重复元素
问题描述实现代码/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* deleteDuplicates(struct ListNode* head){ //temp记录上一个节点的数据,与当前节点比较,相同则删除当前节点 struct ListNode* pre =原创 2022-04-15 11:57:12 · 190 阅读 · 0 评论 -
LeetCode 160. 相交链表
系列文章目录文章目录系列文章目录问题描述实现代码问题描述实现代码代码如下:/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) { s原创 2022-04-14 11:10:45 · 334 阅读 · 0 评论 -
牛客 CM11 链表分割
系列文章目录文章目录系列文章目录题目描述代码题目描述代码/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {}};*/class Partition {public: ListNode* partition(ListNode* pHead, int x) { // write code here原创 2022-04-12 19:52:02 · 213 阅读 · 0 评论 -
LeetCode 21. 合并两个有序链表
系列文章目录文章目录系列文章目录题目描述:代码如下:思路题目描述:代码如下:/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){ struc原创 2022-04-12 17:42:07 · 640 阅读 · 0 评论 -
牛客 BM8 链表中倒数最后k个结点
系列文章目录文章目录系列文章目录题目描述代码题目描述代码/** * struct ListNode { * int val; * struct ListNode *next; * }; * * C语言声明定义全局变量请加上static,防止重复定义 *//** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pHead ListNode类 * @param k int整型 * @return ListNo原创 2022-04-12 12:58:09 · 137 阅读 · 0 评论 -
LeetCode 876. 链表的中间结点
题目描述二、代码如下:struct ListNode* middleNode(struct ListNode* head){ struct ListNode * cur=head; int len=1;//记录总节点个数 //移动nextcur至尾节点、 while(cur->next!=NULL) { cur=cur->next; len++; } //此时nextcur指向尾节点,i为节点个数原创 2022-04-12 12:03:57 · 199 阅读 · 0 评论 -
LeetCode 206. 反转链表
系列文章目录文章目录系列文章目录题目描述题目描述代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* reverseList(struct ListNode* head){ struct ListNode* n1 = NULL; struct List原创 2022-04-11 13:38:38 · 210 阅读 · 0 评论 -
LeetCode 203. 移除链表元素
系列文章目录文章目录系列文章目录题目总结题目代码:struct ListNode* removeElements(struct ListNode* head, int val){ //创建辅助指针pPre和cur struct ListNode * pPre = NULL, * cur = head;; //开始查找val节点 while(cur) { if(val == cur->val) {原创 2022-04-10 16:55:19 · 269 阅读 · 0 评论