最近在LeekCode用java写一些算法时,经常遇到要使用栈和队列结构,使用栈的话,Stack已经不被推荐使用了,所以栈和队列我们通常都是用LinkedList这种双链表结构实现。Linkedlist是一个双向链表,操作起来非常方便,java也封装了很多的方法在这个双向链表里面。 题目:使用栈,L ...
分类:
其他好文 时间:
2021-05-24 10:25:56
阅读次数:
0
单链表实现栈结构->使用环状双链表重构,增加了对链表操作的灵活程度。我相信只要有一点能够优化就值得去做。 “栈”的单链表实现 1 typedef int stack_element; 2 typedef struct stack_node { 3 stack_element element; 4 s ...
分类:
其他好文 时间:
2020-12-21 11:57:13
阅读次数:
0
平衡树 1. 二叉搜索树的优点 二叉搜索树作为数据存储的结构,最大的优势是可以快速找到给定关键字的项,并且可以快速的实现插入和删除数据操作 因为二叉搜索树采用了二分查找的策略 2. 二叉搜索树存在的问题 但是二叉搜索树有一个麻烦的问题:若插入的数据是一个有序数列(从小到大/从大到小),会造成二叉搜索 ...
分类:
其他好文 时间:
2020-09-17 23:05:38
阅读次数:
28
在学完线性表之后,总结一下顺序表的优缺点 优点 无须为元素之间的逻辑结构增添额外的储存空间,自成一体。 随机存取,十分方便。 缺点 空间利用率不高,容易造成“碎片”。 插入删除操作需要移动大量的元素。 当线性表的长度变化较大时,难以确定储存空间的容量。 而单链表可以很好的弥补顺序表的这些缺点。 一、 ...
分类:
其他好文 时间:
2020-08-01 21:38:58
阅读次数:
104
内存分布 数组需要一块连续的内存空间来存储,对内存的要求比较高。如果我们申请一个 100MB 大小的数组,当内存中没有连续的、足够大的存储空间时,即便内存的剩余总可用空间大于 100MB,仍然会申请失败。而链表恰恰相反,它并不需要一块连续的内存空 间,它通过“指针”将一组零散的内存块串联起来使用,所 ...
分类:
其他好文 时间:
2020-06-24 12:11:15
阅读次数:
43
1.单链表操作 class ListNode: def __init__(self,data): #data为数据项,next指向下一节点 self.data = data self.next = None class LinkList: def __init__(self): #初始化head指针 ...
分类:
其他好文 时间:
2020-06-15 20:57:48
阅读次数:
51
链表操作 在c语言里我们通过结构体和数组这两种数据结构构造线性表 创建顺表表-数组静态分配内存 typedef struct { char data[10]; int length; }SqList; bool ListInsert(SqList &L,int i,char e){ for (int ...
分类:
编程语言 时间:
2020-06-08 19:18:56
阅读次数:
101
在看 apue 第 21 章 与网络打印机通信一章时,发现一段关于链表操作的代码有问题,现在摘出来让大家 review 一下。先上代码: printd.c 这是打印服务的源代码,在打印时,用户通过 print 命令提交待打印的文件,print 命令通过 tcp 与 printd 服务通讯, 将文件及 ...
分类:
其他好文 时间:
2020-05-22 19:43:26
阅读次数:
48
集合 思路 存入集合 在集合中进行翻转 遍历操作后的集合 ,构建新的链表 很明显 过程耗时间空间 代码 头插法 参考原文 "王小二:图解k个一组翻转链表" 图解如下: 代码 问题 ? 链表操作(交换)与数组操作 有很大区别 ,数组交换主要是值的交换,而链表是整体。同时需妥善处理next指针,稍不注意 ...
分类:
其他好文 时间:
2020-05-16 18:35:40
阅读次数:
55
无头结点的单链表 1 #include<iostream> 2 #include<cstdio> 3 #include<string> 4 5 //目的是学习单链表的操作 6 //创建,删除,遍历,插入,清空... 7 using namespace std; 8 #define INSERT 1/ ...
分类:
其他好文 时间:
2020-04-30 19:31:40
阅读次数:
56