之前面试被面试官问到的一个问题,当时只是简单地说了下思路,现在重新实现下。
原创 2022-07-28 22:43:20
77阅读
#include<stdio.h>#define STACK_SIZE 64 /*大小*/#define TOP_OF_STACK -1 /*顶位置*/typedef int ElementType; /*元素类型*/#define SUCCESS 0#define FAILURE -1/*定义结构*/typedef struct StackInfo{ ...
原创 2021-07-29 17:29:58
270阅读
Java中,关于数据经常会谈到内存,之前已经说过,在Java中数据主要活跃在三内存区中:方法数据共享区,区,堆区。而今天谈到的主要是俩区和堆区。区主要用来存放些基本数据类型的变量数据和对象的引用变量。(引用变量可以理解为对象或者数组的名字)堆区主要就是用来存放数组和对象本身。数组:在Java中,关于数组,可以分为基本数据类型的数组和类类型的数组。主要分为三步:声明,创建,初始化。声
:LIFO(后进先出),自己实现一个,要求这个具有push()、pop()(返回顶元素并出)、peek() (返回顶元素不出)、isEmpty()这些基本的方法。、采用数组实现提示:每次入之前先判断的容量是否够用,如果不够用就用Arrays.copyOf()进行扩容import java.util.Arrays; /** * 数组实现 * @param &lt
转载 2023-05-25 20:17:27
52阅读
一个数组实现,常见的有两种方法:(1)第一个:从左向有增长     第二:从右向左增长(2)采用交叉索引的方法,1号所占数组索引为0,2,4,6,8....     2号所占数组索引为1,3,5,7....采用方法二代码如下:#include<iostream>using namespace std;#defi
原创 2015-11-15 13:52:57
620阅读
一个数组实现(stack),是限定在表尾进行插入或删除操作的线性表,对来说,表尾端称为顶,表头称为底。实现首先应该对中数据元素和顶指针的关系有清楚的认识顶指针和中元素的关系压一个数组实现,有多种方法,但基本思路就下面三种方法,下面我们分别介绍下各种算法,几种算法的实现区别不大,主要在与扩容时的条件,下面我们主要侧重于几种算法的扩容(1)、我们可以采用两底分别在
原创 2016-04-13 12:39:13
1937阅读
1点赞
1评论
//1.两头在数组头尾(利用率高) //2.两头在数组中间(利用率低) //3.奇偶下标分别为两(扩容时复制数据简单) //实现1 template<class T> class Stack { public: Stack() :_array(NULL) , _q1Size(0) , _q2Size(0) ,&nb
原创 2016-04-25 18:54:38
473阅读
【面试题】一个数组实现思路:在数组中,一个从左往右增长,另一个从右往左增长。思路二:采用交叉索引法,1号所占数组索引1,3,5,7.....;2号所占数组索引2,4,6,8.......思路必须给定数组长度,不易动态增长,但可通过扩容实现动态增长。思路二比思路容易动态增长,但空间利用率低,对两实现了公平。思路实现如下:template<class T&g
原创 2016-04-09 21:33:56
555阅读
题目:  一个数组A[1..n]来实现,使得两中的元素总和不到n时,两都不会发生上溯。思路(1):   创建一个数组,分别从两边开始,依次往中间走。思路(2):  创建一个数组一个走奇数位,一个走偶数位。//奇偶方式 #define  _CRT_SECURE_NO_WARNINGS #include<iostream&
原创 2016-05-19 20:33:50
1744阅读
一个数组实现 --方法1定义一个数组,将数组首元素的前一个位置定义为第一个的起始位置,每次入先将下标加;将数组最后一个元素的后一个位置定义为第二的起始地址,每次入都将下标减;局限:数组的大小不能动态开辟,当数组用完之后,两都无法使用#define MaxSize 100 class DoubleStack { public:  Dou
原创 2015-11-16 11:17:23
1032阅读
利用一个数组实现是数据结构中的道经典面试题,那么如何来求解呢?大多数人为了方便都采取了静态实现方式,但是这种方式不能进行扩容,不够完美。博主利用C++尝试了下动态实现。首先,通过了解的特点(后进先出),可以想到如下几个方案:First>>将数组的下标为奇数的位置都插入1的元素,数组的下标为偶数的位置都插入2的元素。这种方式插入删除时需要利用数组的下标来控制对1操作还是
原创 2016-04-11 21:19:39
581阅读
# 使用 Java 实现的教程 链(也称为链式)是种以链表为基础实现数据结构。与数组相比,链可以动态地扩展空间,使其更加灵活。本文将详细介绍如何在 Java实现一个,并提供必要的代码示例和说明。 ## 流程步骤 下面的表格展示了实现的主要步骤: | 步骤 | 描述
原创 7月前
12阅读
[例子和习题出自数据结构(严蔚敏版), 本人使用java进行实现.  转载请注明作者和出处,  如有谬误, 欢迎在评论中指正. ]实现种先进后出的数据结构, 首先定义了需要实现的接口: 1. public interface 2. /** 3. * 判断是否为空 4. */ 5. boolean 6. /** 7. * 清空 8
转载 2023-07-17 16:27:59
62阅读
下文是笔者采用数组实现结构的方法分享,如下所示:结构简介:一个先入后出(FILO-FirstInLastOut)的有序列表。(stack)是限制线性表中元素的插入和删除只能在线性表的同端进行的种特殊线性表允许插入和删除的端,为变化的端,称为顶(Top),另端为固定的端,称为底(Bottom)。根据的定义可知,最先放入中元素在底,最后放入的元素在顶,而删除元素刚好相
原创 2022-10-09 09:14:58
122阅读
首先 这个的类名为 Mystack;public class MyStack{}接着规定的基本结构:需要一个空间存储数值,这里用数组来存储数据;一个size变量 指示当前的大小;一个top指针 始终指向顶,以便完成出操作;因为数组 有空间大小 所以需要一个MAX_SIZE来规定当前数组最大容量,防止发生数据溢出。为了实现数组动态扩容增加一个addSize变量来记录每次扩容增加的空间。
转载 2023-07-15 20:44:02
69阅读
实现一个队列import java.util.Stack;public class Demo07 { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); public void push(int node) { stack1.
原创 2022-02-08 16:25:52
337阅读
实现一个队列import java.util.Stack;public class Demo07 { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); public void push(int node) { stack1.
原创 2021-07-06 17:34:40
686阅读
实现一个队列
转载 精选 2015-11-11 21:27:37
2194阅读
使用实现一个队列,需要弄清楚和队列的区别: :先进后出; 队列:先进先出。 实现思路: 1)通过两(pushStack / popStack)对倒,确保 popStack 的出顺序与队列出列致。 2)核心难点在加入队列操作,假设队列中已经加入1、2、3、4,加入5的过程: 2.1)假
翻译 2019-08-13 23:32:00
167阅读
2评论
题目一个中元素的类型为整数,现在想将该从顶到底按从大到小的顺序排序,只许申请一个。除此之外可以申请新的变量,但不能申请额外的数据结构。如何完成排序?二 要求将要排序的记为stack,申请的辅助记为help。在stack上执行pop操作,弹出的元素记为cur。1.如果cur小于或等于help的顶元素,则将cur直接压入help;2.如果cur大于help的顶元素,则将help元素逐
原创 2023-09-03 19:35:54
114阅读
  • 1
  • 2
  • 3
  • 4
  • 5