(1 2 2)棧 佇列的的結構定義和基本操作

2021-06-29 02:39:12 字數 1617 閱讀 9660

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...