-
【数据结构】 一个数组实现两个栈【面试】
所属栏目:[安全] 日期:2020-12-15 热度:147
以前,我们实现一个栈,轻轻松松,无需考虑太多因素,即可实现。 现在,要求在一个数组里实现两个栈,那么在数组里怎么实现栈呢? 无非就是下标索引,方法也不局限一种,例如:用奇数下标作为栈s1的结构,用偶数作为s2的结构;再者:一前一后的结构,栈s1从[详细]
-
【数据结构】 栈
所属栏目:[安全] 日期:2020-12-15 热度:109
栈结构,通俗易懂,特点:先进后出,后进先出。 以下,仅对于栈结构常用的操作进行实现 包括: 入栈(push),出栈(pop),判空(empty),栈顶元素(GetTop) #includeiostreamusingnamespacestd;templateclassTclassStack{public:Stack(Tsize)//初始化数组[详细]
-
【数据结构】 二叉树
所属栏目:[安全] 日期:2020-12-15 热度:104
二叉树概念 在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。 二 叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树[详细]
-
【数据结构】非比较排序的算法实现(包括计数排序、计数排序)
所属栏目:[安全] 日期:2020-12-15 热度:57
对于比较排序,大家如果感兴趣,可以查看我的博客:http://www.jb51.cc/article/p-bmmuzqrp-bkg.html 计数排序 思路: 我们假设升序排序 排序序列为2000,2001,3000,4000 遍历序列,取出最小值min,最大值max,开辟一个空间为max—min的空间大小的数组,遍[详细]
-
PAT L2-012. 关于堆的判断【数据结构】
所属栏目:[安全] 日期:2020-12-15 热度:54
题目链接 https://www.patest.cn/contests/gplt/L2-012 思路 题目本身不难,就是字符串处理有点繁琐。 但是有个巨坑!就是你必须得边push边造堆,不能一次性读完再造堆,两者造出来的顺序是不一样的!为此改了十多遍(累觉不爱) 这里用了STL的make_heap,自[详细]
-
《数据结构》算法3.8数制转换的递归实现
所属栏目:[安全] 日期:2020-12-15 热度:134
#includestdio.hvoid Conversion(int n){if(n==0){//printf("%d",0);return;}else{Conversion(n/2);printf("%d",n%2);}}int main(){int n;printf("请输入一个数:");scanf("%d",n);Conversion(n);}[详细]
-
读《数据结构》1-4章[线性结构]
所属栏目:[安全] 日期:2020-12-15 热度:141
2016.06.07 – 06.30 读《数据结构》(严蔚敏 吴伟明)“1-4章”的个人笔记。 06.07 1 与数据结构相关的理解 对数据结构的理解 (编程语言层面)。数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 例 – 线性链表。 /* 描述数据元素的类型 */ty[详细]
-
【数据结构】记忆干货
所属栏目:[安全] 日期:2020-12-15 热度:55
###链表 链表的优点是:采用动态存储分配,不会造成内存浪费和溢出;另外,链表执行插入和删除操作十分方便,修改指针即可,不需要移动大量元素 链表的原理 ###oc 实现 #import Foundation/Foundation.h@interface OCLinkList : NSObject { id data; OCLinkL[详细]
-
《数据结构》创建二叉树
所属栏目:[安全] 日期:2020-12-15 热度:54
输入节点值得时候要注意!!! 要按照abc##de#g##f###的格式输入。 /*二叉树 */#includestdio.h//使用二叉链表存储二叉树 typedef struct BiTNode{char data;struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;//先序遍历的顺序简历二叉链表 void CreateBiTree([详细]
-
【数据结构】单链表的基本操作
所属栏目:[安全] 日期:2020-12-15 热度:67
一、单链表基本概念 单链表是一种链式存取的数据结构 ,用一组地址任意的存储单元存放线性表中的数据 元素 。 二、单链表的基础用法 这里我们先讲一些简单的、基础的用法 如初始化,销毁,插入元素,求链表长度,打印链表以及链表的销毁 除此之外,链表还可[详细]
-
读《数据结构》 5-6章[数组和广义表和树]
所属栏目:[安全] 日期:2020-12-15 热度:134
2016.06.30 – 07.12 读《数据结构》(严蔚敏 吴伟明)“5、6章”的个人笔记。 5 数组和广义表 07.04 本笔记的两种数据结构 —— 数组和广义表可以看成是线性表在下述含义上的扩展:表中的数据元素本身也是一个数据结构。 5.1 数组 (1) 数组的定义 数组抽象[详细]
-
【数据结构】AVLTree(高度平衡的二叉搜索树)
所属栏目:[安全] 日期:2020-12-15 热度:137
AVL树 AVL树又称为高度平衡的二叉搜索树,是1962年有俄罗斯的数学家G.M.Adel'son-Vel'skii和E.M.Landis提出来的。它能保持二叉树的高度平衡,尽量降低二叉树的高度,减少树的平均搜索长度。 AVL树的性质 左子树和右子树的 高度之差的绝对值不超过1 树中的每[详细]
-
【数据结构】第一章总结
所属栏目:[安全] 日期:2020-12-15 热度:166
前言 之前自考的总结发的很少,这次要认真的总结一些,一是因为数据结构比较底层,需要好好梳理这部分知识,二是总结过后印象更加的深刻,这次总结一下第一章内容 思维导图 对于这章的理解 本章是本书的概述性内容,首先从引言抛出计算机解决问题的过程,这[详细]
-
【数据结构】单链表—冒泡排序
所属栏目:[安全] 日期:2020-12-15 热度:112
编程实现单链表的排序,这里我们使用的是冒泡排序 template class T struct ListNode{ T _value; ListNode T * _next; ListNode(const T value) :_value(value),_next( NULL ) {}};template class T class List { public : List () :_head( NULL ) {} bool P[详细]
-
【数据结构】单链表—逆置单链表
所属栏目:[安全] 日期:2020-12-15 热度:139
题目:定义一个函数,输入一个链表的头结点,反转该链表并返回反转链表后的头结点。 我们可以借助图来分析一下: 我们定义一个新的头结点为head,将begin指向head-_next,当begin不为空的时候,tmp = begin,begin = begin-_next,此时tmp是我们要摘下来的结点[详细]
-
【数据结构】单链表—求链表中间节点(只遍历一次链表)— 快慢
所属栏目:[安全] 日期:2020-12-15 热度:101
题目:给出一个单链表的,不知道结点N的值,怎样只遍历一次就可以求出中间结点。 我们可以定义两个指针,快指针和慢指针,都从头开始遍历链表,快指针每次走两步,慢指针每次走一步,当快指针走到结尾时,慢指针指向的便是链表的中间节点。 代码如下: templ[详细]
-
【数据结构】单链表—链表中倒数第K个结点 — 快慢指针
所属栏目:[安全] 日期:2020-12-15 热度:142
输入一个链表,输出该链表中倒数第K个结点。注:链表的尾结点是倒数第一个结点。 思路一: 遍历一遍链表,求出链表的长度。 正数 = 长度 - 倒数 + 1 如图所示: 然后遍历正数的次数,便得到了倒数第K个结点。但是这种方法需要遍历链表两次。 思路二: 遍历一[详细]
-
【数据结构】单链表—判断一个链表是否形成了环形结构 — 快慢指
所属栏目:[安全] 日期:2020-12-15 热度:63
题目:判断一个链表是否形成了环形结构? 思路:定义两个指针,同时从链表的头节点出发,一个指针一次走一步,另一个指针一次走两步,如果走的快的指针追上走的慢的指针,那么链表就是环形链表,如果走的快的指针走到了链表的末尾都没有追上第一个指针,那么[详细]
-
【数据结构】单链表—从尾到头输出单链表 — 栈 / 递归
所属栏目:[安全] 日期:2020-12-15 热度:109
题目:输入一个链表的头节点,从尾到头反过来打印每个节点的值 思路一:遍历的顺序是从头到尾,而输出的顺序是从尾到头,也就是说第一个遍历的最后一个输出,最后一个遍历的第一个输出,这是先进后出,我们可以借助栈,遍历链表将每一个节点放入栈中,然后再[详细]
-
【数据结构】单链表—在O(1)时间删除链表结点
所属栏目:[安全] 日期:2020-12-15 热度:158
题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。 思路:如果按常规思路来 删除一个结点需要找到该结点的前一个结点,将这个节点的_next指向被删除节点的 _next,找到这个该结点的前一个结点就需要遍历链表,此时就不是O(1)时[详细]
-
【数据结构】单链表—合并两个排序链表 — 递归
所属栏目:[安全] 日期:2020-12-15 热度:57
题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍使按照递增排序的。 思路: 代码如下: templateclass T struct ListNode{ T _value; ListNode T * _ next ; ListNode(const T value) :_value(value),_ next ( NULL ) {}};templateclass[详细]
-
【数据结构】单链表—寻找两个相交链表中第一个公共结点 — 蛮力
所属栏目:[安全] 日期:2020-12-15 热度:103
题目:输入两个链表,找到它们的第一个公共结点。 思路一:蛮力法 在第一个链表上顺序遍历每一个结点,每遍历一个节点在第二个链表顺序遍历每一个结点,如果第二个链表上有一个结点和第一个链表上一样,说明两个链表在这个结点上重合,于是就找到它们的公共[详细]
-
【数据结构】线性表的顺序存储完整程序
所属栏目:[安全] 日期:2020-12-15 热度:150
数据结构,线性表的顺序存储完整程序 #includestdio.h #includemalloc.h #includestdlib.h #includeiostream.h #define LIST_INIT_SIZE 100 #define LISTNCREMENT 10 typedef struct { int *elem; int length; int listsize;}Sqlist;Sqlist InitSList(); voi[详细]
-
【数据结构】单链表
所属栏目:[安全] 日期:2020-12-15 热度:134
PS:是模仿别人的来写的,调试成功,注意指针的指针用法,还有函数指针作为实参的调用形式 #includeiostream.h#includestdlib.htypedef struct Person{char name[20];int age;} ElemType;typedef struct LinkNode{ElemType data;struct LinkNode *next;} *Poi[详细]
-
【数据结构】链表排序
所属栏目:[安全] 日期:2020-12-15 热度:180
typedef struct Node{int data;Node *pNext;}NODE,PNODE; void sort_list(PNODE pHead){int i,j,t;PNODE p,q;int len =getLength(pHead);for(i=0,p=pHead-pNext;ilen-1;++i,p=p-pNext){for(j = i+1,q=p-pNext;jlen-1;++j,q=q-pNext){if(p-dataq-data){//类似[详细]