棧與佇列基本操作

2021-07-27 03:39:37 字數 2331 閱讀 6101

想了下,上學期學的資料結構線性結構還有些混亂的地方,想做一點注意事項的總結。

1.鍊錶

2.棧順序棧:定義乙個陣列(可以是陣列形式的data[ ]或指標形式的*data,若是指標形式就

需要在結構體中加乙個變數maxsize存放陣列的最大容量)和棧頂指標(在順序棧中就是

陣列下標),棧頂指標存放棧頂元素,初始化時棧頂為-1。下面給出順序棧的演算法。

#include#include#define maxsize 10

typedef struct stacknode * stack;

typedef int elementype; //方便一處改,處處改

struct stacknode

;stack creatstack() //初始化

int iffull(stack s)

int ifempty(stack s)

int push(stack s,elementype x)

}elementype pop(stack s)

int main()

;stack creatstack()

int ifempty(stack s) //s是棧頂指標

int push(stack s,elementype x)

}elementype pop(stack s)

int main()

for(i=0;i<5;i++)

printf("%d ",pop(s1));

printf("\n");

return 0;

}

3.佇列

順序佇列/迴圈佇列:順序佇列與迴圈佇列基本一致,都是利用陣列存放資料,但是迴圈

佇列在利用空間上要更高效一些。順序佇列用乙個向量空間(一般使用一維陣列)來存放

當前佇列中的元素。由於佇列的隊頭和隊尾的位置是變化的,設定兩個指標front和rear

分別指示隊頭元素和隊尾元素在向量空間中的位置,它們的初值在佇列初始化時均應置為0。

二者判斷隊空隊滿條件:順序佇列中q.front = q.rear 表示隊空,q.rear = maxsize表示

隊滿.而在迴圈佇列中q.front=q.rear表示隊空,而無法用q.rear=maxsize表示隊滿.(有

兩種方法,一種是設定標誌位,另外一種是放棄乙個空間,隊尾指標不指向任何元素,用

這兩種狀態把隊空隊滿區分開。第二種較為常用。下面給出迴圈佇列的常見演算法及c**。

#include#include#define maxsize 8 //佇列最大容量,但是對於迴圈佇列可以存放的元素個數為maxsize-1

個typedef int elementype;

typedef struct qnode * queue;

struct qnode

;queue create()

int ifempty(queue q)

int iffull(queue q)

int insert(queue q,elementype x)

}elementype delete(queue q)

}int length(queue q)

int main()

;struct queuenode

;void create(ptrtnode q) //初始化鏈佇列

int insert(ptrtnode q,elementype x)

return 1;

}elementype delete(ptrtnode q)

free(p);

return m; }}

int main()

{ int i,k;

queue q1;

ptrtnode s;

s=(ptrtnode)malloc(sizeof(struct queuenode));

create(s);

q1=(queue)malloc(sizeof(struct queue));

scanf("%d",&k);

q1->data=k;

q1->next=null;

s->front=q1;

s->rear=q1;

for(i=1;i

棧與佇列基本操作

include include typedef struct lnodelnode,linklist 頭插法 linklist create list head int n return head 尾插法 linklist create list tail int n else tail next ...

7 6 棧與佇列 棧的基本操作和應用

棧和佇列都是特殊的線性表,是限制訪問位置的線性結構 可以由順序表實現,也可以由鍊錶實現。棧定義為 只允許在表的一端進行插入和刪除的線性表 允許進行插入和刪除的一端叫做 棧頂 top 而另一端叫 棧底 bottom 棧中沒有任何元素時,稱為 空棧。設給定棧s a0,a1,an 1 稱a0為棧底,an ...

棧和佇列的基本操作

看歐立奇的 程式設計師面試寶典 的棧和佇列的部分,發現了部分問題。其中棧的部分,不能簡單的用malloc函式來初始化stack,應該呼叫create 函式 而且棧的base應該指向棧的最下面的資料的下乙個位址。全部除錯通過 棧的部分通過單鏈表來實現鏈棧的結構 include using namesp...