資料結構 棧和佇列

2021-09-27 09:49:24 字數 2554 閱讀 1069

1.1 棧和佇列對應順序棧和鏈棧的定義

// 順序棧

typedef struct

sqstack;

// 鏈棧

typedef struct lnode

lnode;

// 順序佇列

typedef struct

sqqueue;

// 鏈佇列

typdef struct qnode

qnode

typedef struct

liqueue;

/* 棧插入和刪除的常用操作

------------------------

int stack[maxsize];int top =-1;

stack[++p]= x;

x= stack[p--];

btnode *stack[maxsize] ;int top =-1;

stack[++p]= x;

x= stack[p--];

------------------------

*/

2.1 順序棧的操作

// 初始化

void initstack(sqstack &st)

// 判斷棧空

int isempty(sqstack st)

if(st.top == -1)

return 1;

else

return 0;

// 棧入

int push(sqstack &st,int x)

// 棧出

int pop(sqstack &st, int &x)

2.2 鏈棧的操作

// 棧空

lst-> next == null

// 進棧 //頭插入

p->next =lst->next;lst->next =p;

// 出棧

q=lst->next;x=q->data; lst->next = q->next; free(q);

// 初始化

void initstack(lnode *&lst)

// 判斷棧空

init isempty(lnode *lst)

// 進棧

void push(lnode *lst,int x)

//出棧

int pop(lnode *lst,int &x)

3.1 順序佇列

/* 順序佇列的常用操作

------------------------

int front,rear;

btnode *que[maxsize];

front = rear =0

------------------------*/;

// 隊空:qu.rear =qu.front

// 隊滿:(qu.rear+1)%maxsize ==qu.front

// 進隊:qu.rear = (qu.rear+1 )%maxsize; qu.data[qu.rear] = x;

// 出隊:qu.front = (qu.front+1)%maxsize; qu.data[qu.front] = x;

// 初始化

void initqueue(sqqueue &qu)

// 判斷為空

int isqueueempty(sqqueue qu)

//進隊

int enqueue(sqqueue &qu,int x)

//出隊

int dequeue(squeue &qu,int &x)

3.2 鏈佇列

// 空隊:lqu->rear == null;或者lqu->front ==null;

// 不存在堆滿

// 進隊:lqu->rear->next = p; lqu->rear=p;

// 出隊:p=lqu->front;lqu->front = p->next;x=p->data;free(p);

// 初始化

void initqueue(liqueue *&lqu)

// 判斷隊空

int isqueueempty(liqueue *lqu)

// 入隊

void enqueue(liqueue *lqu,int x)

}// 出隊

int dequeue(qnode *lqu,int &x)

/* 常用的定義

int front,rear;

front = rear = 0;

btnode *que[maxsize]

btnode *stack[maxsize];

int top= -1;

/*

資料結構 棧和佇列

棧 基礎 知識棧 練習題 佇列 基礎知識 棧示意圖 後進先出 順序棧結構定義 define maxsize 1024 struct stack 操作函式 push 入棧 pop 出棧 struct lstack 鏈棧示意圖 操作函式 push 入棧 pop 出棧 注意 也可以直接呼叫系統已經寫好的庫...

資料結構 棧和佇列

本章的基本內容是 兩種特殊的線性表 棧和佇列 從資料結構角度看,棧和佇列是操作受限的線性表,他們的邏輯結構相同。從抽象資料型別角度看,棧和佇列是兩種重要的抽象資料型別。p棧 限定僅在表的一端進行插入和刪除操作的線性表。p允許插入和刪除的一端稱為棧頂,另一端稱為棧底。p空棧 不含任何資料元素的棧。a ...

資料結構 棧和佇列

用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。class solution int pop node stack2.top stack2.pop return node private stack stack1 stack stack2 大家都知道斐波那契數列,現...