棧是一種特殊的線性表,棧是限定僅在表尾進行插入和刪除操作的線性表。我們把允許插入和刪除的一端稱為棧頂(top),另一端稱為棧底(bottom),不含任何資料元素的棧稱為空棧。棧又稱為後進先出(last in first out)的線性表,簡稱lifo結構
棧的順序儲存結構簡稱為順序棧,順序棧是利用一組位址連續的儲存單元依次存放棧底到棧頂的資料元素,棧底位置固定不變,棧頂位置隨著入棧和出棧操作而變化。棧頂指標top等於零時,代表棧中有乙個元素,因此通常把空棧的判定條件定為top等於-1.
#define maxsize 100
typedef
int elemtype;
typedef
struct sqstack
sqstack;
void
initstack
(sqstack *s)
//初始化函式
top等於-1表示棧為空
void
push
(sqstack *s, elemtype e)
//進棧函式,e為新加入棧頂的元素
s->top++
;//使棧頂指標top加1
s->data[s->top]
= e;
//將新元素e加入
}
void
pop(sqstack *s, elemtype *e)
//出棧函式
*e = s->data[s->top]
;//將出棧的元素通過e返回
s->top--
;//使棧頂指標減1
}
void
showstack
(sqstack *s)
//列印該棧
else
} s->top = i;
//將原先的top指標還原
}
注意此函式當棧頂指標top迴圈後一定要在最後使它回到棧頂位置
int
stacklength
(sqstack *s)
//返回棧的元素個數
void
gettop
(sqstack *s, elemtype *e)
//得到棧頂的元素,用e返回
*e = s->data[s->top]
;//將棧頂元素賦值給e
}
到此,順序表的基本操作已經完成,下面附上原始碼原始碼:
#include
#include
#define maxsize 100
typedef
int elemtype;
typedef
struct sqstack
sqstack;
void
initstack
(sqstack *s)
//初始化函式
void
push
(sqstack *s, elemtype e)
//進棧函式,e為新加入棧頂的元素
s->top++
;//使棧頂指標top加1
s->data[s->top]
= e;
//將新元素e加入
}void
pop(sqstack *s, elemtype *e)
//出棧函式
*e = s->data[s->top]
;//將出棧的元素通過e返回
s->top--
;//使棧頂指標減1
}void
showstack
(sqstack *s)
//列印該棧
else
} s->top = i;
//將原先的top指標還原
}int
stacklength
(sqstack *s)
//返回棧的元素個數
void
gettop
(sqstack *s, elemtype *e)
//得到棧頂的元素,用e返回
*e = s->data[s->top]
;//將棧頂元素賦值給e
}int
main()
資料結構 棧的順序儲存結構
什麼是棧?簡單的說是乙個後進先出的表,類似於彈夾,後入的子彈先打出來。下面是棧的一些具體操作步驟 首先是棧的結構定義 typedef int selemtype typedef struct sqstack,sq 棧的初始化 建立操作 sq initstack sq s s top 1 printf...
資料結構 棧的順序儲存
棧是一種後進先出的資料結構,也就是說他不像陣列那樣子,可以在中間插入,棧只能夠在上乙個存入資料的後面再存資料,而且只能取現進去的資料。棧簡稱lifo結構。棧是限定僅在表位進行插入和刪除操作的線性表。允許插入和刪除的一端叫棧頂,另一端叫棧底,不含任何元素的叫空棧。棧的插入操作,叫做進棧,也稱作壓棧,入...
資料結構 棧的順序儲存
include include using namespace std define size 10 pragma warning disable 4996 typedef struct l list void openlist list l 初始化棧 void insertlist list l,...