資料結構之棧和佇列(偽碼及例項)

2021-10-05 22:43:42 字數 2770 閱讀 6669

**棧:**是一種運算受限的線性表。限定僅在表尾(棧頂)進行插入和刪除操作的線性表(先進後出)。

**入棧:**從開口(棧頂)依次進入,不能從中間插入元素。

**出棧:**從開口(棧頂)依次出棧。

//建立棧

#define e 100

initstack

(stack *p)

p->top = p->base;

p->statsize = e;

}//入棧

#define e 10

push

(stack *p, elemtype e)

p->top = p.base +p->statsize;

//更新棧頂

p->stacksize = p->stacksize + e;

//更新棧的容量}*

(p->top)

= e;

p->top++;}

//出棧

pop(stack *p, elemtype *e)

*(s->top)=*

((s->top)-1

)*e =

*(s->top);}

//銷毀棧

destroystach

(stach *p)

s->base = s->top =

null

; s->stacksize =0;

}

#include

#include

#include

#define max 20

typedef

char elemtype;

typedef

struct stack

stack;

//入棧

stack*

push

(stack* l, elemtype e)

//elemtype e ==》 相當於 char e

p->top = p->base;

l = p;

return l;

}//出棧

stack*

pop(stack* p, elemtype e)

//int

stacklen

(stack* p)

intmain()

len =

-stacklen

(l);

printf_s

("棧長:%d\n"

,len)

;getchar()

;system

("pause");

return0;

}

**佇列:**佇列是一種特殊的線性表,特殊之處在於它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。

typedef sturct nodenode,

*queueptr;

typedef

struct

linkqueue;

//建立佇列

initqueue

(linkqueue *queue)

//入佇列

insertqueue

(linkqueue *queue, elemtype e)

p->data = e;

p->next =

null

; queue->rear->next = p;

queue->rear = p;

}//出佇列

deletequeue

(linkqueue *queue, elemtype *e)

//銷毀佇列

destroyqueue

(linkqueue *queue)

}

#include

#include

#include

typedef

struct node node;

//初始化佇列

node*

initqueue()

//入佇列

node*

insertqueue

(node* rear,

int e)

//出佇列

node*

deletequeue

(node* top, node *rear)

node* p = top->next;

printf_s

("%d "

, p->data)

; top->next = p->next;

if(rear == p)

free

(p);

return rear;

}int

main()

for(j =

1; j <= len+

1; j++

)//出佇列

system

("pause");

return0;

}

資料結構之棧和佇列

棧 stack 是限定僅在表尾進行插入和刪除操作的線性表。我們把允許插入和刪除的一端稱為棧頂 top 另一端稱為棧底 bottom 不含任何資料元素的棧稱為空棧。棧又稱為後進先出 last in first out 的線性表,簡稱lifo結構。棧的插入操作,叫做進棧,也稱壓棧 入棧。類似子彈入彈夾。...

資料結構之棧和佇列

棧是乙個非常常見的資料結構,它在計算機領域中被廣泛的使用,比如作業系統會給每個執行緒分配乙個棧。用來儲存函式呼叫時各個函式的引數,返回值以及臨時變數等。棧的特點是先進後出。通常棧是乙個不考慮排序的資料結構,我們需要o n 時間才能找到棧中的最大值或者最小值,如果想要在o 1 時間內找到棧中的最大值或...

資料結構之棧和佇列

讀自 資料結構 c語言版 嚴蔚敏 吳偉民 清華大學出版社 棧 棧是限定僅在表尾進行插入或刪除操作的線性表。因此對於棧來說,表尾端有其特殊含義,稱為棧頂 top 相應地,表頭端稱為棧底 bottom 不含元素的空表稱為空棧。後進先出lifo 棧的順序儲存表示 define stack init siz...