2024-05-24 05:24:11 | 我爱编程网
你得明白栈的定义。代码执行的时候是执行一个方法,执行完,返回方法的上一个代码块继续往下执行后面的内容。这样的话是不是就是一个栈结构了?先进后出。方法一边执行,一边往栈里面存数据,等执行完了就取出数据(取出的是返回值,是最后一个存进去的 栈结构是后进先出),然后执行外面的代码。这么说你可能不明白,我给你举个例子。
int sub(int a,int b){
return a+b;
}
int c = sub(2,3);//注意执行这条语句的时候是不是执行了一个方法?
//那么语句执行的时候是要从左往右执行的对吧,但是事实的逻辑却是先算出来sub(2,3)这个方
//法的返回值,然后再把返回值(5)赋值给 c ,那么这个怎么实现,肯定是一个栈的数据结构,编译的时候先把”int c = “入栈,然后再把 sub(2,3),入栈,执行的时候,从栈里面取,取的第一个肯定是sub(2,3)吧?于是就计算出等于5,继续取,取出了int c =,然后就和5对接上了,就把值赋给c了。这只是一个小例子。
道理是这样,但是具体的存取可不是这样的哦。具体的存取应该分的非常细腻,应该是按照java语法的最小单位来往栈里存取的。说白了一句话,程序运行的时候的先后顺序是跟人大脑想问题的顺序一样的,但是代码不是按照这样的顺序写的(从左到右),于是就用栈结构来达到这样的效果。
这么说,明白了吗?
晚上3点还在学习,你也真是蛮拼的。
不知道你Node的代码是怎样的,getNext和setNext方法具体内容。姑且按你说的,head为null,Next为下一Node节点来说吧。(其实我觉得setNext应该是set data的值才对,不是Next。不过没所谓了。按你假设的来说吧)
初始化时,MyLinkedStack中的head如下:head.data=null, head.next=null;
然后第一次入栈,倒数第三行时,n如下:n.data=data, n.next=null;
倒数第二行的head链如下:head.data=null, head.next=n;
若是有再次入栈,我设Node对象为n1,然后数据为data1吧。那n1新建的时候也是:n1.data=data1, n1.next=null;
倒数第三行的n1如下:n1.data=data1, n1.next=n;
倒数第二行的head链如下:head.data=null, head.next=n1, n1.next=n;
当然,这是不知道你getNext和setNext具体代码的情况下,我觉得是head.data=n1, head.next=n;这样才好的。重点来了:栈是后进先出的。
我爱编程网(https://www.52biancheng.com)小编还为大家带来栈的入栈和出栈的顺序规律是什么?的相关内容。
入栈的顺序规律是排在前面的先进,排在后面的后进。我爱编程网
栈(stack)又名
堆栈
,它是一种运算受限的
线性表
。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。
向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
要搞清楚这个概念,首先要明白”栈“原来的意思,如此才能把握本质。栈,存储货物或供旅客住宿的地方,可引申为仓库、中转站,所以引入到计算机领域里,就是指数据暂时存储的地方,所以才有进栈、出栈的说法。
首先系统或者
数据结构
栈中数据内容的读取与插入(压入push和 弹出pop)是两回事!压入是增加数据,弹出是删除数据 ,这些操作只能从栈顶即最低地址作为约束的接口界面入手操作 ,但读取栈中的数据是随便的没有接口约束之说。
很多人都误解这个理念从而对栈产生困惑。而系统栈在
计算机体系结构
中又起到一个跨部件交互的媒介区域的作用 即 cpu 与内存的交流通道 ,cpu只从系统给我们自己编写的
应用程序
所规定的栈入口线性地读取执行指令, 用一个形象的词来形容它就是pipeline(管道线、流水线)。cpu内部交互具体参见 EU与BIU的概念介绍。
php分页跳转你这个太麻烦我给你推荐一个<?phpclasspage{var$page_name="page";var$next_page='>';//下一页var$pre_page='<';//上一页var$first_page='<<首页';//首页var$last_page='尾页>>';//尾页var$p
用php做个计算器(加减乘除),两个文本框输入数字,第三个输出结果并不需要php呀这样写的行不<!DOCTYPE html><html><head> <title>简单计算器</title></head><body> <input type="text" name="first" id="f
深入PHP中的HashTable结构详解深入PHP中的HashTable结构详解深入PHP中的HashTable结构详解对php内核有一定了解的人应该都知道php的精髓就是HashTable,HashTable在php的实现中无处不在。包括php的数组、什么全局变量、局部变量的作用域等等,php的hashtable拆开来说就是四部分:hash函数:用的是time33的散列
java求解,怎么实现输人一个以0结尾的数值序列,以0表示输入结束!题目如下,代码如图,图中是错的while的条件判断是当输入为0时,结束循环。并用了list的sort方法。importjava.util.ArrayList;importjava.util.Scanner;publicclassTest{publicstaticvoidmain(Str
php实现文件安全下载的代码怎么用你可以建立一个函数如下:functiondownload($fileName){Header("content-type:application/octet-stream");Header("content-disposition:attatchment;filename:".$fileName.".torrent");if(file_e
php实现文件下载代码~echo"<ahref='$file'>".$file."</a>"需要绝对路径,而且注意目录是不可以下载的。<?php$root="d:/";if(is_dir($root)){$openHandle=opendir($root);while(false!==($file=readdir($openHandle)))
请问php的数据库函数中mysql_fetch_row、mysql_affected_rows、mysql_num_rows的区别1.当从数据库中取出数据时,mysql_num_rows()函数返回符合查询条件的记录行数,如果没有符合的,返回0。2.当向数据库插入数据和更新某个记录的部分内容时,用mysql_affected_rows返回插入或者更新成功的行数。3.mysql_fet
急需日历记事本JAVA源代码importjava.util.Calendar;importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;importjava.io.*;importjava.util.Hashtable;publicclassCalendarPadextendsJFrameimplement
2025-02-01 20:24:39
2025-02-12 03:21:37
2025-02-10 15:19:48
2025-01-28 17:58:32
2024-11-22 05:08:01
2024-09-10 08:50:00