Недавно я сам просмотрел структуру данных и самостоятельно внедрил стек. Стек - это тип таблицы, которая ограничивает вставку и удаление только одной позиции. Самые основные операции - это и из стека, поэтому она также называется таблицей «первые внутри и выходы».
Во -первых, давайте поймем концепцию стека:
Стек представляет собой линейную таблицу, которая ограничивает операции вставки и удаления только в заголовке таблицы. Иногда это также называется Lifo (последнее в таблице First Out). Чтобы понять эту концепцию, вы должны сначала понять первоначальное значение «стека», чтобы вы могли понять суть.
«Стек» означает место, где товары хранятся или пассажиры могут быть распространены на склад или транзитную станцию. Следовательно, он вводится в поле компьютера, которое относится к месту, где данные временно хранятся, поэтому есть поговорка, что он входит в стек и выходит из стека.
Метод реализации выглядит следующим образом: сначала определите интерфейс, а затем реализуйте линейный стек и стек цепи через этот интерфейс. Код относительно прост, следующим образом:
Пакет com.peter.java.dsa.interfaces;/*** Определение операции стека** @author Peter Pan*/public stack <t> {/* Query uppion*/boolean isempty ();/* clear stack*/void clear ();/* ukl stack*/t pop ();/* enter*/boolean push (t data); стек, но не удаляйте его*/t peek ();/*Возвращает положение объекта в стеке*/int search (t data);}Линейный стек: реализован в массиве.
Пакет com.peter.java.dsa.common; import com.peter.java.dsa.interfaces.stack;/** * Линейный стек * * @author Peter Pan */public class linearstack <t> stack <t> {@suppresswarnings («Незаконная проверка»). isempty () {// todo Автопогенерированный метод stubreturn size == 0;}@переопределить публичный void clear () {// todo автоматически сгенерированный метод (int i = 0; i <t.length; i ++) {t [i] = null;} size = 0;}@overde public tp () {// tod aut-gene-gefore aut-gifif size = 0;}@overde to pop () {// tod autiif size = 0; 0) {return null;} t tmp = t [size-1]; t [size-1] = null; size-; return tmp;}@переопределить общедоступный логический push (t data) {// todo автоматически генерируемый метод (size> = t.length) {resize ();} t [size ++] = return true; Автопогенерированный метод stubreturn size;}@переопределить public t peek () {// todo, сгенерированный автоматическим методом (size == 0) {return null;} else {return t [size -1];}}/ * return index of Data, return -1, если нет данных */@public int int search (t Data) {// todo aut -aut -get -gene -gen -genexinte -inexinte -inexinte -inexint atexinte -antexinte -antexinat (int i = 0; i <t.length; i ++) {if (t [i] .equals (data)) {index = i; break;}} return index;}@suppresswarnings ("unchecked") private void resize () {t [] tmp = (t []) new octive [t.length * 2]; for (int i = 0; {tmp [i] = t [i]; t [i] = null;} t = tmp; tmp = null;}/ * Слева вправо находится от верхней до нижней части стека */@overde public String toString () {// todo Auto-Generated Method STUBStringBuffer Buffer = new StringBuffer (); (int i = t.length -1; i> -1; i--) {buffer.append (t [i] .tostring () + ",");} buffer.append ("]"); buffer.replace (buffer.lastidexof (","), buffer.lastindexof (",") + 1, ");Стек цепочки: реализован через один связанный список.
Пакет com.peter.java.dsa.common; import com.peter.java.dsa.interfaces.stack; public class linkedStack <t> реализует стек <t> {private node top; private int size; @Override public boolean isempty () {// todo Auto-Genegerated Method stubretur Автопогенерированный метод stubtop = null; size = 0;}@переопределить public t pop () {// todo автоматически сгенерированный метод stubt topvalue = null; if (top! = Null) {topvalue = top.data; node oldtop = top; top = prev; oldtop = null; Boolean push(T data) {// TODO Auto-generated method stubNode oldTop = top;top = new Node(data);top.prev = oldTop;size++;return true;}@Override public int length() {// TODO Auto-generated method stubreturn size;}@Override public T peek() {// TODO Auto-generated method stubT topValue = null; if (top! = null) {topvalue = top.data;} return topvalue;}@переопределить public int search (t data) {// todo автоматически генерируемый метод stubint = -1; node tmp = top; for (int i = size -1; i> -1; i--) i; break;} else {tmp = tmp.prev;}} tmp = null; return index;}@переопределить публичную строку toString () {// todo Автогенерированный метод StubstringBuffer buffer = new stringbuffer (); ifer.Append ("inked stack: ["); node tmp = topefer; i ++) {buffer.append (tmp.tostring () + ","); tmp = tmp.prev;} tmp = null; buffer.append ("]"); buffer.replace (buffer.lastindexof (","), buffer.lastindexof (",", ") + 1,"); {T data; node prev; public node (t data) {// todo Автогенерированный конструктор stubthis.data = data;}}}Обучение все еще продолжается, и код будет продолжать обновляться в будущем.
Это все подробное объяснение кода стека структуры данных в реализации языка Java, я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!