棧的定義:棧(stack)是限定僅在表尾進行插入和刪除的線性表
棧的插入操作,也叫入棧、壓棧、進棧;
棧的刪除操作,也叫出棧、彈棧。
首先我們來看棧的抽象資料型別
棧的結構定義:adt 棧(stack)
data
同線性表。元素具有相同的型別,相鄰元素具有前驅和後繼關係。
operation
initstack(*s):初始化操作,建立乙個空棧。
destroystack(*s):若棧存在,則銷毀它。
clearstack(*s):清空棧。
stackempty(s):若棧為空,返回ture,否則返回false。
gettop(s,*e):若棧s存在且非空,用e返回s的棧頂元素。
push(*s,e):若棧s存在,插入新元素e到棧s中並成為棧頂元素
pop(*s,*e):刪除棧s中棧頂元素,並用e返回其值。
stacklength(s):返回棧s的元素個數。
endadt
棧的順序儲存結構——進棧操作typedef int selemtype;
typedef struct
sqstack;
//插入元素e為新的棧頂元素
status push(sqstack *s,selemtype e)
s->top++; //棧頂元素加1.
s->data[s->top]=e; //將新插入元素賦值給棧頂空間
return ok;
}
//若棧不空,則刪除s的棧頂元素,用e返回其值
status pop(sqstack *s,selemtype *e)
棧的鏈式儲存結構://兩棧共享空間結構
typedef struct
sqdoublestack;
//插入元素e為新的棧頂元素
status pus(sqdoublestack *s,selemtype e,int stacknumber)
//若棧不空,則刪除s的棧頂元素,用e返回其值,並返回ok;否則返回error
status pop(sqdoublestack *s,selemtype *e,int stacknumber)
else if(stacknumber==2)
return ok;
}
typedef struct stacknode
stacknode,*linkstackptr;
typedef struct linkstack
linkstack;
//插入元素e為新的棧頂元素
status push(linkstack *s,selemtype e)
//棧的鏈式儲存結構——出棧操作
//操作結果:若棧不空,刪除s的棧頂元素,用e返回其值,並返回ok;否則返回error
status pop(linkstack *s,selemtype *e)
資料結構 一 線性表
一 線性表的定義 線性結構的特點是 在資料元素的非空有限集中,1 存在唯一的乙個被成為 第乙個 的資料元素 2 存在唯一的乙個被成為 最後乙個 的資料元素 3 除了第乙個之外,其他的元素均只有乙個前驅,除了最後乙個以外,其他的元素均只有乙個後繼 線性表是最常用且最簡單的一種資料結構,乙個線性表是n個...
資料結構筆記(一) 線性表(順序表 鍊錶)
資料結構筆記 一 線性表 線性表就是乙個一維的表,其中各個元素之間是一對一的。對線性表的定義 adt 線性表 list data 線性表的資料物件集合 a1,a2,an 每個元素的型別均為datatype。其中,出來第乙個元素a1外,每乙個元素有且只有乙個直接前驅元素,出來最後乙個元素an外,每乙個...
C 資料結構實驗一線性表
實驗內容 1.建立乙個順序表,隨機產生 10 個 100 以內的整數,並按要求完成 1 編寫顯示函式,在螢幕上顯示順序表中的 10 個整數 2 編寫查詢函式,從鍵盤輸入任一整數在順序表中查詢,若找到,返回該元素在順序表中的位置,否則提示無此元素 3 編寫插入函式,從鍵盤輸入待插入元素及插入位置,將完...