**棧:**是一種運算受限的線性表。限定僅在表尾(棧頂)進行插入和刪除操作的線性表(先進後出)。
**入棧:**從開口(棧頂)依次進入,不能從中間插入元素。
**出棧:**從開口(棧頂)依次出棧。
//建立棧
#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...