تشارك هذه المقالة إصدار Java من خوارزمية Maze باستخدام المكدس ، والذي يبحث بشكل أساسي في استخدام المكدس للرجوع إليه. المحتوى المحدد كما يلي
الأفكار الرئيسية هي كما يلي:
هل {if (يمكن تمرير الموضع الحالي) {وضع علامة على هذا الموقف الذي مر ؛ احفظ الموضع الحالي ودمجه في المكدس ؛ إذا (الموضع الحالي هو نقطة النهاية) {نهاية البرنامج ؛ } احصل على الموضع التالي ؛ } آخر {if (المكدس ليس فارغًا) {out of stack ؛ بينما (اتجاه الموضع الحالي هو 4 والمكدس ليس فارغًا) {وضع علامة على الموضع الحالي الذي لا يمكن نقله ؛ من المكدس } إذا (اتجاه الموضع الحالي يكون أقل من 4) {Direction +1 ؛ إعادة إدخال المكدس. احصل على الموقف التالي ؛ }}}} بينما (المكدس ليس فارغًا) ؛رمز Java كما يلي:
استيراد java.util.stack ؛ maze الفئة العامة {// stack stack stack <Mazenode> stack = new stack <maze.mazenode> () ؛ // maze private int [] [] maze = {{1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1، {1،0،1 ، 1،1،1،1 ، 1،1،1،1،1،1،1،1،0،0،0،1،1،1،1،1،1،1،1،0،0،1،0،1،1،1،1،1،1،1 ، 0،0،1،0،1،1،1،1،1،1،0،0،0،1،1،1،1،1،1،1،1،0،0،0،1،1،1،1،1،1،1 ، 1،1،1،1،0،0،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1 ، 1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1 ، 1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1 ، 1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1 {1،0،0،1 ، {1،1،0،1،1،1،1،1،1،1 ، ، 1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1 ، 1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1 ، 1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1،1 ، int static int int maze_size_x = 14 ؛ static int int int maze_size_y = 17 ؛ int in end_x = 12 ؛ خاص ثابت نهائي int end_y = 15 ؛ private void initmark () {for (int i = 0 ؛ i <maze_size_x ؛ i ++) {for (int j = 0 ؛ j <maze_size_y ؛ j ++) {mark [i] [j] = 0 ؛ }}} public void process () {initmark () ؛ موقف curpos = موقف جديد (1 ، 1) ؛ do {// يمكن استخدام هذا المسار إذا (maze [curpos.x] [curpos.y] == 0 && mark [curpos.x] [curpos.y] == 0) {mark [curpos.x] [curpos.y] = 1 ؛ stack.push (mazenode new (curpos ، 1)) ؛ // end point if (curpos.x == end_x && curpos.y == end_y) {return ؛ } curpos = nextPos (curpos ، stack.peek (). الاتجاه) ؛ } // غير قادر على الانتقال إلى {if (! stack.isempty ()) {mazenode curnode = stack.pop () ؛ بينما (curnode.direction == 4 &&! stack.isempty ()) {// إذا تمت تجربة جميع الاتجاهات الأربعة للموضع الحالي ، ثم حدد الموضع الذي لا يمكن نقله وعلامة [curnode.position.x] [curnode.position.y] = 1 ؛ curnode = stack.pop () ؛ } if (curnode.direction <4) {curnode.direction ++ ؛ // direction +1 stack.push (curnode) ؛ // re enter curpos = nextpos (curnode.position ، curnode.direction) ؛ // الحصول على الموقع التالي}}}}} } public void drawmaze () {for (int i = 0 ؛ i <maze.length ؛ i ++) {for (int j = 0 ؛ j <maze [0] .length ؛ j ++) {system.out.print (maze [i] [j]) ؛ } system.out.print ("/n") ؛ } system.out.print ("/n") ؛ } public void drawResult () {initmark () ؛ عقدة Mazenode ؛ بينما (! stack.isempty ()) {node = stack.pop () ؛ Mark [node.position.x] [node.position.y] = 1 ؛ } لـ (int i = 0 ؛ i <mark.length ؛ i ++) {for (int j = 0 ؛ j <mark [0] .length ؛ j ++) {system.out.print (mark [i] [j]) ؛ } system.out.print ("/n") ؛ } system.out.print ("/n") ؛ } // سجل موضع النقاط في موضع فئة المتاهة {int x ؛ int y ؛ الموقف العام (int x ، int y) {this.x = x ؛ this.y = y ؛ }} // العقدة في فئة المكدس mazenode {موضع الموضع ؛ الاتجاه int mazenode العامة (position pos) {this.position = pos ؛ } mazenode العامة (الموضع pos ، int dir) {this.position = pos ؛ this.direction = dir ؛ }} // الوضع التالي ، بدءًا من الموقف العام الأيمن في اتجاه عقارب الساعة NEXTPOS (موضع الموضع ، الاتجاه int) {position newPosition = new position (position.x ، position.y) ؛ التبديل (الاتجاه) {الحالة 1: newPosition.y += 1 ؛ استراحة؛ الحالة 2: newPosition.x += 1 ؛ استراحة؛ الحالة 3: newPosition.y -= 1 ؛ استراحة؛ الحالة 4: newPosition.x -= 1 ؛ استراحة؛ الافتراضي: استراحة ؛ } إرجاع newPosition ؛ } public static void main (string [] args) {maze maze = new maze () ؛ maze.drawmaze () ؛ Maze.Process () ؛ maze.drawresult () ؛ }}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.