鏈棧的定義與基本操作
佇列(queue)
鏈式佇列的定義與基本操作
初始化鏈式佇列以及佇列的判空
因為棧本質上也是線性表,所以有順序儲存和鏈式儲存兩種儲存方式
typedef
int elemtype;
#define maxsize 10
//定義棧中元素的最大個數
typedef
struct
seqstack;
//初始化棧
void
initstack
(seqstack *s)
//判空
bool stackempty
(seqstack *s)
return false;
//不空
}
//入棧操作
bool push
(seqstack *s, elemtype e)
s->data[
++s->top]
= e;
//先將指向棧頂的指標+1,再入棧
return true;
}
//出棧操作,返回元素e
bool pop
(seqstack *s,elemtype *e)
*e = s->data[s->top--];
//先出棧,再將棧頂指標-1
return true;
}
//讀取棧頂元素
bool gettop
(seqstack *s,elemtype *e)
*e = s->data[s->top]
;//獲取棧頂元素
return true;
}
typedef
int elemtype;
typedef
struct linknode
*lstack;
//棧型別定義
//初始化鏈棧(帶頭結點)
lstack initstack
(void
)int
main
(int argc,
const
char
* ar**)
//入棧操作(帶頭結點)
bool push
(lstack l,elemtype e)
p->data = e;
//將資料賦值給新節點的資料域中
p->next = l->next;
//新結點指向棧頂結點
l->next = p;
return true;
}
//出棧操作(帶頭結點)
bool pop
(lstack l,elemtype *e)
lnode *p = l->next;
//p代表即將出棧的結點
*e = p->data;
//獲取到出棧結點的元素值
l->next = p->next;
free
(p);
//將p刪除
return true;
}
因為佇列本質上也是線性表,所以有順序儲存和鏈式儲存兩種儲存方式。
typedef
int elemtype;
#define maxsize 10
//佇列中元素的最大個數
typedef
struct
seqqueue;
//初始化佇列
seqqueue initqueue
(void
)//判空
bool queueempty
(seqqueue *q)
else
}
//入隊操作
bool enqueue
(seqqueue *q,elemtype e)
q->data[q->rear]
= e;
//新元素入隊
q->rear =
(q->rear+1)
%maxsize;
//隊尾指向下乙個空間
return true;
}
//出隊操作
bool dequeue
(seqqueue *q,elemtype *e)
*e = q->data[q->front]
;//儲存元素
q->front =
(q->front+1)
%maxsize;
//對頭指向下乙個儲存單元
return true;
}
typedef
int elemtype;
typedef
struct linknodelinknode;
typedef
struct linkqueuelinkqueue;
//初始化鏈式佇列(帶頭結點)
void
initlinkqueue
(linkqueue *q)
//判空
bool queueempty
(linkqueue q)
return false;
}
//入隊操作
bool enqueue
(linkqueue *q,elemtype e)
p->data = e;
//將資料儲存在新結點中
p->next =
null
; q->rear->next = p;
//將新結點插入到尾結點後
q->rear = p;
//讓新插入的結點作為尾結點
return true;
}
//出隊操作
bool dequeue
(linkqueue *q,elemtype *e)
linknode *p = q->front->next;
//獲取到要出隊的結點
*e = p->data;
//獲取結點資料
q->front->next = p->next;
//令頭結點的後繼=出隊結點的後繼
free
(p);
//釋放出隊接點
if(q->front->next ==
null
)return true;
}
資料結構 c 語言版 第三章 列表
向量是連續儲存的,列表是鏈式儲存的。向量有尋秩訪問的能力,隨機查詢迅速,但是插入和刪除效能差。列表的尋位置訪問,隨機查詢效能差,但是插入和刪除效能高 氣泡排序是每輪迴圈,比較左右兩個元素,比較大的交換到後面,所以一輪迴圈能夠保證當前最大的元素一定排到最後面。但是氣泡排序這樣就產生很大的缺點,大量的時...
資料結構第三章學習小結
一 本章內容小結 第三章主要學習了兩種資料結構 棧和佇列,它們是操作受限的線性表。棧只能在棧頂進行插入和刪除,因此先進後出 而佇列則是在隊頭刪除,隊尾插入,先進先出,因此需要根據題目來選取應用哪種資料結構。後面還通過棧來處理遞迴問題,並分析遞迴方法的效率與時間複雜度,最後通過學習三個經典案例 括號匹...
資料結構第三章學習小結
1.這一章學習了兩種新的結構,棧和佇列,棧是後進先出的結構,佇列是先進先出的結構,兩種結構的特點決定了兩種結構使用的場景。下面對棧和佇列的一些基本操作進行展示。一 棧 分為順序棧和鏈棧,這裡是順序棧的一些基本操作 1 include 2 include 3 using namespace std 4...