1.1)順序棧的結構圖定義
1.2)順序棧的基本操作:
先訪問,後移動指標
int stack[maxsize]; int top=-1;//初始化宣告,注意,該方法會導致top指標指向第乙個棧頂節點,而不是頭結點
stack[++top]=x;//進棧
x=stack[top--];//出棧
stack.top==1;//驗證空棧
stack.top==maxize-1;//驗證滿棧
2.1)鏈棧的結構定義
注意:該圖中沒有表示頭結點
typedef structlnode;
2.2)鏈棧的基本操作
入棧: lst-next=p->next; lst->netx=p;
出棧:x=lst->next;
/*佇列的資料抽象*/
typedef
struct
sqqueue;
/*判斷佇列是否為空*/
bool
isempty(sqqueue q)
/*判斷佇列是否已滿,這裡我們犧牲乙個空間,為甚麼?****/
bool
isfull(sqqueue q)
/*獲取佇列長度*/
intqueuelength(sqqueue q)
/*入佇列*/
status inqueue(sqqueue &q,qelementtype e)
/*出佇列*/
; 進隊
q->rear->next=s; //將結點s插入到隊尾
,q為頭結點,也就是頭指標
q->rear=s;
出隊if
(rear==front)
throw
"下溢"
; p=front->next;
x=p->data; //暫存隊頭元素
front->next=p->next; //將隊頭元素所在結點摘鏈
if(p->next==null) rear=front;
//判斷出隊前佇列長度是否為1
棧和佇列的基本操作
看歐立奇的 程式設計師面試寶典 的棧和佇列的部分,發現了部分問題。其中棧的部分,不能簡單的用malloc函式來初始化stack,應該呼叫create 函式 而且棧的base應該指向棧的最下面的資料的下乙個位址。全部除錯通過 棧的部分通過單鏈表來實現鏈棧的結構 include using namesp...
棧和佇列的基本操作
一種特殊的的線性表,只允許在固定的一端進行插入和刪除操作。棧被稱作是先進後出的線性表。只允許在一端進行插入資料操作,在另一端刪除資料操作的特殊線性表。具有先進先出的特性。迴圈佇列 簡單了解 隊空 rear front 隊滿 rear 1 maxsize front 初始化 銷毀 增 刪 查 type...
棧和佇列的基本實現
這篇部落格主要說一下棧和佇列的主要實現,是以c語言完成的,雖然可能用到的機會很少,但是還是了解一下比較好。話不多說,進入正題 棧的實現 define defstacksize 100 void checkcapacity stack ps void stackinit stack ps void s...