**未空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 儲存空間初始...