資料結構C語言版(第二章迷宮)

2021-08-30 06:37:44 字數 3280 閱讀 4351

**未空blog

//我剛開始對stack的記憶體分配那有點問題,後來用這個**除錯了下,感覺有點明白了,   位址由高到低分配,然後**中的base和top剛開始指向位址最低的地方,記憶體不夠時重新在原有基礎上新增記憶體,top指向原有的棧頂,然後繼續存入資料

/*

#include#include#include#include#include#define stack_init_size 1

#define stackincrement 10

#define ok 1

#define true 1

#define false 0

#define overflow -1

#define error 0

#define maxlength 25;

using namespace std;

typedef int status;

typedef int mazetype[25][25];

typedef int elemtype;

struct postype;

struct selemtype;

postype curpos; //定義當前位置

postype direction[4] = , , , }; //定義四個方向

typedef structsqstack;

status initstack(sqstack &l) //構建乙個棧

status push(sqstack &l, selemtype &e) //棧中插入元素e

*l.top++ = e;

// l.stacksize++;

return ok;

}status pop(sqstack &l, selemtype &e)

status isstackempty(sqstack s)

mazetype maze;

int i, j, m, n; //m,n表示行數列數

void printmaze() //輸出迷宮

}postype start, end; //入口和出口分別用begin 和and 表示

status initmaze() //設定迷宮

for (i = 0; i < n; i++)

for (j = 0; j < m; j++)

cout << "迷宮的初始結構如下: " << endl;

printmaze();

cout << "請輸入迷宮的牆數:" << endl;

int num;

int x1, y1;

cin >> num;

cout << "請輸入迷宮的牆的座標:" << endl;

for (i = 0; i < num; i++)

cout << "請輸入入口的座標:" << endl;

cin >> start.x >> start.y;

cout << "請輸入出口的座標: " << endl;

cin >> end.x >> end.y;

printmaze();

return 0;

}int curstep = 1; //走到第幾個格仔了,初值在入口處為一

status canpass(postype b)

void footprint(postype b) //把某個點b變成足跡

status nextpos(postype &e, int direc)

status markprint(postype b)

status mazepath(postype start, postype end)

;struct selemtype;

postype curpos; //定義當前位置

postype direction[4] = , , , }; //定義四個方向

typedef structsqstack;

status initstack(sqstack &l) //構建乙個棧

status push(sqstack &l, selemtype &e) //棧中插入元素e

status pop(sqstack &l, selemtype &e)

status isstackempty(sqstack s)

mazetype maze;

int i, j, m, n; //m,n表示行數列數

void printmaze() //輸出迷宮

}postype start, end; //入口和出口分別用begin 和and 表示

status initmaze() //設定迷宮

for (i = 0; i < n; i++)

for (j = 0; j < m; j++)

cout << "迷宮的初始結構如下: " << endl;

printmaze();

cout << "請輸入迷宮的牆數:" << endl;

int num;

int x1, y1;

cin >> num;

cout << "請輸入迷宮的牆的座標:" << endl;

for (i = 0; i < num; i++)

cout << "請輸入入口的座標:" << endl;

cin >> start.x >> start.y;

cout << "請輸入出口的座標: " << endl;

cin >> end.x >> end.y;

printmaze();

return 0;

}int curstep = 1; //走到第幾個格仔了,初值在入口處為一

status canpass(postype b)

void footprint(postype b) //把某個點b變成足跡

status nextpos(postype &e, int direc)

status markprint(postype b)

status mazepath(postype start, postype end)

else

if (e.direc < 3)

}} } while (!isstackempty(s));

return false;

}int main()

return 0;

}

資料結構(C語言版) 第二章 線性表

線性表的基本操作 destroylist l clearlist l listempty l listlength l getelem l,i,e priorelem l,cur e,pre e nextelem l,cur e,next e listinsert l,i,e listdelete ...

資料結構(C語言版)第二章線性表之順序儲存結構

一 線性表的型別定義 1 線性結構的特點 在資料元素的非空有限集合中,1 存在唯一的乙個 第乙個 或 最後乙個 資料元素 2 除第乙個元素外,每個資料元素只有乙個前驅 3 除最後乙個元素外,每個資料元素只有乙個後繼 2 線性表中的元素是多種多樣的,但同一線性表中的元素必定有相同的特性,相鄰資料元素之...

資料結構(C語言版)

用棧實現數字的進製轉換 10轉8 棧 限定只能在表尾進行插入或者刪除操作的線性表 特點 先進後出 儲存表示方法 順序棧和鏈棧 本文用的順序棧 實現 readonly name code class c include include define stack init size 100 儲存空間初始...