เมื่อเร็ว ๆ นี้ฉันได้ตรวจสอบโครงสร้างข้อมูลและดำเนินการสแต็กด้วยตัวเอง สแต็คเป็นประเภทของตารางที่ จำกัด การแทรกและการลบเพียงตำแหน่งเดียว การดำเนินการขั้นพื้นฐานที่สุดคือเข้าและออกจากสแต็กดังนั้นจึงเรียกว่าตาราง "เข้ามาครั้งแรก"
ก่อนอื่นให้เข้าใจแนวคิดของสแต็ค:
สแต็กเป็นตารางเชิงเส้นที่ จำกัด การแทรกและการลบการดำเนินการในส่วนหัวของตารางเท่านั้น บางครั้งมันก็เรียกว่า LIFO (ล่าสุดในตารางแรกออก) เพื่อให้เข้าใจแนวคิดนี้คุณต้องเข้าใจความหมายดั้งเดิมของ "สแต็ค" ก่อนเพื่อให้คุณสามารถเข้าใจสาระสำคัญ
"สแต็ค" หมายถึงสถานที่ที่เก็บสินค้าหรือผู้โดยสารสามารถขยายไปยังคลังสินค้าหรือสถานีขนส่งได้ ดังนั้นจึงถูกนำเข้าสู่ฟิลด์คอมพิวเตอร์ซึ่งหมายถึงสถานที่ที่เก็บข้อมูลชั่วคราวดังนั้นจึงมีคำกล่าวว่ามันเข้าสู่สแต็กและออกจากสแต็ก
วิธีการใช้งานมีดังนี้: ก่อนกำหนดอินเทอร์เฟซก่อนจากนั้นใช้สแต็กเชิงเส้นและห่วงโซ่สแต็กผ่านอินเทอร์เฟซนี้ รหัสค่อนข้างง่ายดังนี้:
แพ็คเกจ com.peter.java.dsa.interfaces;/*** นิยามการดำเนินการสแต็ก** @author ปีเตอร์แพน*/สแต็กสาธารณะ <t> {/* แบบสอบถามว่างเปล่า*/บูลีน isempty ();/* สแต็คที่ชัดเจน*/void clear ();/* bull stack*/t pop () ดูองค์ประกอบที่ด้านบนของสแต็ก แต่ไม่ลบ*/t peek ();/*ส่งคืนตำแหน่งของวัตถุในการค้นหาสแต็ก*/int (ข้อมูล t);}สแต็คเชิงเส้น: นำไปใช้ในอาร์เรย์
แพ็คเกจ com.peter.java.dsa.Common; นำเข้า com.peter.java.dsa.interfaces.stack;/** * สแต็กเชิงเส้น * * @author Peter Pan */คลาสสาธารณะ linearstack <t> ใช้สแต็ก <t> {@suppresswarnings ( Boolean isempty () {// todo วิธีการที่สร้างขึ้นอัตโนมัติขนาด stubreturn ขนาด == 0;}@การแทนที่โมฆะสาธารณะล้าง () {// toDo วิธีการที่สร้างขึ้นอัตโนมัติ stubfor (int i = 0; i <t.length; i ++) {t [i] = null; == 0) {return null;} t tmp = t [ขนาด-1]; t [ขนาด-1] = null; ขนาด-; return tmp;}@override บูลีนสาธารณะกด (ข้อมูล t) {// toDo วิธีการ generated อัตโนมัติ วิธีการที่สร้างขึ้นอัตโนมัติขนาด stubreturn ขนาด;}@override สาธารณะ peek () {// toDo วิธีการที่สร้างอัตโนมัติ auto -stubif (size == 0) {return null;} else {return t [1];}}/ * ดัชนีข้อมูลส่งคืนข้อมูลกลับ -1 (int i = 0; i <t.length; i ++) {if (t [i] .equals (data)) {index = i; break;}} return index;}@suppresswarnings ("unchecked") void private () {t [] tmp = (t []) {tmp [i] = t [i]; t [i] = null;} t = tmp; tmp = null;}/ * จากซ้ายไปด้านขวามาจากด้านบนถึงด้านล่างของสแต็ก */@entride string toString () {// toDo เนื้อหา: ["); สำหรับ (int i = t.length -1; i> -1; i--) {buffer.append (t [i] .toString () +", ");} buffer.append ("] "); buffer.replace buffer.toString ();}}Chain Stack: นำไปใช้ผ่านรายการที่เชื่อมโยงเดียว
แพ็คเกจ com.peter.java.dsa.Common; นำเข้า com.peter.java.dsa.interfaces.stack; คลาสสาธารณะ LinkedStack <t> ใช้สแต็ก <t> {โหนดส่วนตัวด้านบนขนาด int ส่วนตัว; วิธีการที่สร้างขึ้นอัตโนมัติ stubtop = null; size = 0;}@override public t pop () {// toDo วิธีที่สร้างอัตโนมัติ auto-generated stubt topvalue = null; ถ้า (บนสุด! Boolean push (t data) {// toDo วิธีการที่สร้างขึ้นอัตโนมัติ stubnode oldtop = top; top = โหนดใหม่ (data); top.prev = oldtop; ขนาด ++; return true;}@แทนที่ความยาวสาธารณะ () null; if (top! = null) {topValue = top.data;} return topValue;}@แทนที่การค้นหา int สาธารณะ (t data) {// toDo วิธีการที่สร้างขึ้นอัตโนมัติดัชนี stubint = -1; node tmp = top; สำหรับ (int i = size -1; else {tmp = tmp.prev;}} tmp = null; return index;}@override public String toString () {// toDo วิธีการที่สร้างอัตโนมัติโดยอัตโนมัติ buffer buffer = node stringbuffer (); {buffer.append (tmp.toString () + ","); tmp = tmp.prev;} tmp = null; buffer.append ("]"); buffer.replace (buffer.AlastIndexof (","), buffer.AltIndexof (",") ก่อนหน้า; โหนดสาธารณะ (ข้อมูล t) {// toDo toDo สร้างตัวสร้างอัตโนมัติ stubthis.data = data;}}}}การเรียนรู้ยังอยู่ในระหว่างดำเนินการและรหัสจะยังคงได้รับการปรับปรุงในอนาคต
นี่คือคำอธิบายโดยละเอียดทั้งหมดของโครงสร้างข้อมูลการใช้งานภาษา Java ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!