欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言數(shù)據(jù)結構之迷宮問題

 更新時間:2019年03月24日 16:29:05   作者:lear_scu  
這篇文章主要為大家詳細介紹了C語言數(shù)據(jù)結構之迷宮問題,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了數(shù)據(jù)結構c語言版迷宮問題棧實現(xiàn)的具體代碼,供大家參考,具體內容如下

程序主要參考自嚴蔚敏老師的數(shù)據(jù)結構c語言版,在書中程序的大體框架下進行了完善。關于迷宮問題的思路可查閱原書。

#include<iostream>
 
using namespace std;
 
#define MAXSIZE 10
typedef int Status;
typedef struct{
 int x;
  int y;
}Postype;
typedef struct{
 int ord;
 Postype seat;
 int dir;
}SElemType;//棧的元素類型
typedef struct{
 //SElemType data[MAXSIZE];
 SElemType* top;
 SElemType* base;
}Stack;//棧的結構類型
typedef struct{
 char arr[MAXSIZE][MAXSIZE];
}MAZETYPE;//迷宮結構體
 
MAZETYPE maze;
void InitMaze()
{
 maze.arr[0][0] = maze.arr[0][1] = maze.arr[0][2] = maze.arr[0][3] = maze.arr[0][4] = maze.arr[0][5] = maze.arr[0][6] = maze.arr[0][7] = maze.arr[0][8] = maze.arr[0][9] = '1';
 maze.arr[1][0] = maze.arr[1][3] = maze.arr[1][7] = maze.arr[1][9] = '1';
 maze.arr[1][1] = maze.arr[1][2] = maze.arr[1][4] = maze.arr[1][5] = maze.arr[1][6] = maze.arr[1][8] = '0';
 maze.arr[2][0] = maze.arr[2][3] = maze.arr[2][7] = maze.arr[2][9] = '1';
 maze.arr[2][1] = maze.arr[2][2] = maze.arr[2][4] = maze.arr[2][5] = maze.arr[2][6] = maze.arr[2][8] = '0';
 maze.arr[3][0] = maze.arr[3][5] = maze.arr[3][6] = maze.arr[3][9] = '1';
 maze.arr[3][1] = maze.arr[3][2] = maze.arr[3][3] = maze.arr[3][4] = maze.arr[3][7] = maze.arr[3][8] = '0';
 maze.arr[4][0] = maze.arr[4][2] = maze.arr[4][3] = maze.arr[4][4] = maze.arr[4][9] = '1';
 maze.arr[4][1] = maze.arr[4][5] = maze.arr[4][6] = maze.arr[4][7] = maze.arr[4][8] = '0';
 maze.arr[5][0] = maze.arr[5][4] = maze.arr[5][9] = '1';
 maze.arr[5][1] = maze.arr[5][2] = maze.arr[5][3] = maze.arr[5][5] = maze.arr[5][6] = maze.arr[5][7] = maze.arr[5][8] = '0';
 maze.arr[6][0] = maze.arr[6][2] = maze.arr[6][6] = maze.arr[6][9] = '1';
 maze.arr[6][1] = maze.arr[6][3] = maze.arr[6][4] = maze.arr[6][5] = maze.arr[6][7] = maze.arr[6][8] = '0';
 maze.arr[7][0] = maze.arr[7][2] = maze.arr[7][3] = maze.arr[7][4] = maze.arr[7][6] = maze.arr[7][9] = '1';
 maze.arr[7][1] = maze.arr[7][5] = maze.arr[7][7] = maze.arr[7][8] = '0';
 maze.arr[8][0] = maze.arr[8][1] = maze.arr[8][9] = '0';
 maze.arr[8][2] = maze.arr[8][3] = maze.arr[8][4] = maze.arr[8][5] = maze.arr[8][6] = maze.arr[8][7] = maze.arr[8][8] = '0';
 maze.arr[9][0] = maze.arr[9][1] = maze.arr[9][2] = maze.arr[9][3] = maze.arr[9][4] = maze.arr[9][5] = maze.arr[9][6] = maze.arr[9][7] = maze.arr[9][8] = maze.arr[9][9] = '1';
}
Status initStack(Stack &s)
{
 s.base = (SElemType*)malloc(MAXSIZE*sizeof(SElemType));
 if (!s.base) return 0;
 s.top = s.base;
 return 1;
}
void Push(Stack &s, SElemType e)
{
 *s.top++ = e;
}
void Pop(Stack &s, SElemType &e)
{
 e = *--s.top;
}
Status StackEmpty(Stack &s)
{
 if (s.top == s.base) return 1;
 else return 0;
}
Status Pass(Postype curpos)
{
 if (maze.arr[curpos.x][curpos.y] == '0')
 return 1;
 else return 0;
}
void Foot(Postype curpos)
{
 maze.arr[curpos.x][curpos.y] = '*';
}
void MarkPrint(Postype curpos)
{
 maze.arr[curpos.x][curpos.y] = '!';
}
Status StructCmp(Postype a, Postype b)
{
 if (a.x = b.x&&a.y == b.y) return 1;
 else return 0;
}
//下一個位置
Postype NextPos(Postype CurPos, int Dir)
{
 Postype ReturnPos;
 switch (Dir)
 {
 case 1:
 ReturnPos.x = CurPos.x;
 ReturnPos.y = CurPos.y + 1;
 break;
 case 2:
 ReturnPos.x = CurPos.x + 1;
 ReturnPos.y = CurPos.y;
 break;
 case 3:
 ReturnPos.x = CurPos.x;
 ReturnPos.y = CurPos.y - 1;
 break;
 case 4:
 ReturnPos.x = CurPos.x - 1;
 ReturnPos.y = CurPos.y;
 break;
 }
 return ReturnPos;
}
 
Status MazePath(Postype start, Postype end)
{
 Stack s;
 SElemType e;
 initStack(s);
 Postype curpos = start;
 int curstep = 1;
 do{
 if (Pass(curpos))
 {
  Foot(curpos);
  e = { curstep, curpos, 1 };
  Push(s, e);
  if (StructCmp(curpos, end)) return 1;
  curpos = NextPos(curpos, 1);
  curstep++;
 }
 else
 {
  if (!StackEmpty(s))
  {
  Pop(s, e);
  while (e.dir ==4 &&!StackEmpty(s))
  {
   MarkPrint(e.seat); Pop(s, e);
  }
  if (e.dir < 4 && !StackEmpty(s))
  {
   e.dir++;
   Push(s, e);
   curpos = NextPos(e.seat, e.dir);
  }
  }
 
 
 }
 
 } while (!StackEmpty(s));
 return 0;
 
}
 
int main()
{
 InitMaze();
 Postype s, e;
 s.x = s.y = 1;
 e.x = e.y = 8;
 if (MazePath(s, e))
 printf("迷宮成功解密!\n");
 else
 printf("解密失敗\n");
 for (int i = 0; i < 10; i++)
 {
 for (int j = 0; j < 10; j++)
  {
  printf("%c ", maze.arr[i][j]);
  }
 printf("\n");
  }
 cout << "-=================================" << endl;
 for (int i = 0; i < 10; i++)
 {
 for (int j = 0; j < 10; j++)
 {
  if (maze.arr[i][j] == '*' || maze.arr[i][j] == '!')
  printf("%c ", maze.arr[i][j]);
  else cout << " ";
 }
 printf("\n");
 }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • c++實現(xiàn)掃雷小游戲代碼分享

    c++實現(xiàn)掃雷小游戲代碼分享

    這篇文章主要介紹了c++實現(xiàn)掃雷小游戲并附上代碼分享,代碼不能夠實現(xiàn)當所查坐標周圍雷的數(shù)量為0時,直接展開周圍坐標,但有一點的知識性參考價值,需要的小伙伴可以參考一下
    2022-02-02
  • 快速掌握VC6.0中各種宏注釋應用(附圖)

    快速掌握VC6.0中各種宏注釋應用(附圖)

    為了方便別人或自己閱讀自己的程序,注釋是堅決不可少的,一個漂亮的程序,不是在于你應用的技術多么高深,而是能夠把高深的技術描述的清楚易懂
    2013-01-01
  • C/C++中#define的妙用分享

    C/C++中#define的妙用分享

    本文主要介紹了C++/C關于#define的一些妙用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • 一文讀懂c++11 Lambda表達式

    一文讀懂c++11 Lambda表達式

    這篇文章主要介紹了c++11 Lambda表達式的相關資料,幫助大家更好的理解和學習C++,感興趣的朋友可以了解下
    2020-08-08
  • 《C++ Primer》隱式類類型轉換學習整理

    《C++ Primer》隱式類類型轉換學習整理

    在本篇文章里小編給大家整理的是關于《C++ Primer》隱式類類型轉換學習筆記內容,需要的朋友們參考下。
    2020-02-02
  • C++實現(xiàn)LeetCode(127.詞語階梯)

    C++實現(xiàn)LeetCode(127.詞語階梯)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(127.詞語階梯),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-07-07
  • Clion(CMake工具)中引入第三方庫的詳細方法

    Clion(CMake工具)中引入第三方庫的詳細方法

    這篇文章主要介紹了Clion(CMake工具)中引入第三方庫的詳細方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • C語言數(shù)據(jù)結構之簡易計算器

    C語言數(shù)據(jù)結構之簡易計算器

    這篇文章主要為大家詳細介紹了C語言數(shù)據(jù)結構之簡易計算器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • c語言快速排序算法示例代碼分享

    c語言快速排序算法示例代碼分享

    快速排序使用分治法(Divide and conquer)策略來把一個串行(list)分為兩個子串行(sub-lists)
    2014-02-02
  • Qt編寫地圖實現(xiàn)閃爍點圖的示例代碼

    Qt編寫地圖實現(xiàn)閃爍點圖的示例代碼

    閃爍點圖的核心有三個要素,城市的名稱、城市的經(jīng)緯度、對應值的大小,當值越大閃爍點也就越大,本文就來實現(xiàn)一下地圖閃爍點圖,具有一定的參考價值,感興趣的可以了解一下
    2021-12-12

最新評論