棧的抽象資料型別的型別定義:
adt stack
資料關係:
r1=約定an端為棧頂,a1端為棧底。
基本操作:初始化、進棧、出棧、取棧頂元素等
}adt stack
initstack(&s)初始化操作
操作結果:構造乙個空棧s。
destroystack(&s)銷毀棧操作
初始條件:棧s已存在。
操作結果:棧s被銷毀。
stackempty(s)判定s是否為空棧
初始條件:棧s已存在。
操作結果:若棧s為空棧,則返回true,
否則false。
stacklength()求棧的長度
初始條件:棧s已存在。
操作結果:返回s的元素個數,即棧的長度。
gettop(s,&e) 取棧頂元素
初始條件:棧s已存在且非空。
操作結果:用e返回s的棧頂元素。
clearstack(&s) 棧置空操作
初始條件:棧s已存在。
操作結果:將s清為空棧。
push(&s, e) 入棧操作
初始條件:棧s已存在。
操作結果:插入元素e為新的棧頂元素。
pop(&s,&e) 出棧操作
初始條件:棧s已存在且非空。
操作結果:刪除s的棧頂元素an,並用e返回
其值。使用陣列作為順序棧儲存方式的特點:簡單方便容易溢位(上溢下溢)
儲存方式:同一般線性表的順序儲存結構完全相同,
利用—組位址連續的儲存單元依次存放自棧底
到棧頁的資料元素。棧底一般在低位址端。
·附設top指標,指示棧頂元素在順序棧中的位置。
·另設base指標,指示棧底元素在順序棧中的位置。
base==top棧空
top-bace==stzcksie棧滿
stacksize表示棧可用的最大容量
順序棧的表示
#define maxsize 100
typedef structsqstack;
status initstack(sqstack &s)
判斷順序棧是否為空
status stackempty(sqstacks)
//若棧為空,返回true;否則返回false
if (s.top == s.base)
return true;
else
return false;
}求順序棧長度
int stacklengh(sqstack s)
清空順序棧:
status clearstack( sqstack &s)
銷毀順序棧:
status destroystack( sqstack &s )
return ok;
}順序棧的入棧:
出棧
鏈棧鏈棧是運算受限的單鏈表,;只能從鍊錶一端進行操作
鏈棧初始化:
void initstack(linkstack &s)
判斷鏈棧是否為空
status stackempty(linkstack s)
鏈棧壓棧(入棧)
status push(linkstack &s,selemtype e)
a[rear%max]=data;
rear++;
return rear;
}int dequeue(int *a,int front,int rear)
printf("%d ",a[front]);
//front不再直接 +1,而是+1後同max進行比較,如果=max,則直接跳轉到 a[0]
front=(front+1)%max;
return front;
}int main()
使用此方法需要注意的是,順序佇列在判斷陣列是否已滿時,出現下面情況:
當隊列為空時,佇列的頭指標等於佇列的尾指標;
當陣列滿員時,佇列的頭指標等於佇列的尾指標;
順序佇列的儲存狀態不同,但是判斷條件相同。為了對其進行區分,最簡單的解決辦法是:犧牲掉陣列中的乙個儲存空間,判斷陣列滿員的條件是:尾指標的下乙個位置和頭指標相遇,就說明陣列滿了,
佇列的初始化:
佇列的長度:
int queuelength (sqqueue q)
出隊:status dequeue (sqqueue &qqelemtype &e)
取隊頭元素
selemtype gethead(sqquere q)
return ok;
將元素e入隊
status enqueue(linkqueue &q,qelemtype e)
鏈佇列出隊
status dequeue (linkqueue &qqelemtype &e)
棧與佇列 Linux C程式設計一站式學習
資料結構的概念 資料結構是資料的組織方式。程式中用到的資料都不是孤立的,而是有相互聯絡的,根據訪問資料的需求不同,同樣的資料可以有多種不同的組織方式。資料的組織方式包含了儲存方式和訪問方式這兩層意思,二者是緊密聯絡的。比如說陣列元素的儲存空間是連續的。堆疊堆疊也是一組資料的集合,它的訪問規則限制為p...
一站式資料智慧型平台概念及能力
一站式資料智慧型平台依靠一體化管理,融合數智化工具,向不同行業使用者提供專業的 覆蓋資料全生命週期的產品及服務,幫助企業更好地利用資料價值,在數位化轉型過程中實現資料驅動業務。一站式資料智慧型平台概念界定 覆蓋各類資料全生命週期,融合數智化能力的專業資料服務 一站式資料智慧型平台依靠一體化管理,融合...
國內首個Hadoop一站式產品 直面大資料
本文講的是國內首個hadoop一站式產品 直面大資料,精誠集團是台灣的一家資訊服務企業,是亞洲資訊服務產業的領導廠商。精誠集團此次推出的一站式大資料解決方案etu,從軟體 硬體,到整合後的資料處理 分析 與未來擴充時的各個場景提供整體解決方案。etu的中文名字是 知意圖 由 意圖 發展而來,代表發現...