test.c
#define _crt_secure_no_warnings 1
#include
"queues.h"
intmain()
queues.c
#include
"queues.h"
#include
#include
#include
#include
#include
typedef
struct
mycircularqueue;
//採用陣列實現
bool mycircularqueueisempty
(mycircularqueue* obj)
;bool mycircularqueueisfull
(mycircularqueue* obj)
;//注意加上函式宣告
mycircularqueue*
mycircularqueuecreate
(int k)
mycircularqueue* obj =
(mycircularqueue*
)malloc
(sizeof
(mycircularqueue));
if(obj ==
null
) obj->data =
(int*)
malloc
(k *
sizeof
(int))
;if(obj->data ==
null
)//賦各項初值
obj->front = obj->rear =0;
obj->size = k;
obj->flag =0;
return obj;
}bool mycircularqueueenqueue
(mycircularqueue* obj,
int value)
obj->data[obj->rear]
= value;
//插入資料
obj->rear =
((obj->rear +1)
< obj->size)
?(obj->rear +1)
:0;//判斷是否到達陣列邊界,且尾指標+1
if(obj->rear == obj->front)
return true;
}bool mycircularqueuedequeue
(mycircularqueue* obj)
obj->data[obj->front]=0
;//清除隊頭的資料
obj->front =
((obj->front +1)
< obj->size)
?(obj->front +1)
:0;//判斷是否到達陣列邊界,且頭指標+1
obj->flag =0;
//只要刪除了元素,佇列就不可能滿
return true;
}int
mycircularqueuefront
(mycircularqueue* obj)
return obj->data[obj->front];}
intmycircularqueuerear
(mycircularqueue* obj)
int i =
(obj->rear ==0)
?(obj->size -1)
:(obj->rear -1)
;//尾指標指向的是末尾資料的下乙個位置,此處避免陣列越界
return obj->data[i];}
bool mycircularqueueisempty
(mycircularqueue* obj)
else
}bool mycircularqueueisfull
(mycircularqueue* obj)
else
}void
mycircularqueuefree
(mycircularqueue* obj)
queues.h
#pragma once
//防止重複包含
#include
typedef
struct
mycircularqueue;
//採用陣列實現
bool mycircularqueueisempty
(mycircularqueue* obj)
;bool mycircularqueueisfull
(mycircularqueue* obj)
;//注意加上函式宣告
mycircularqueue*
mycircularqueuecreate
(int k)
;bool mycircularqueueenqueue
(mycircularqueue* obj,
int value)
;bool mycircularqueuedequeue
(mycircularqueue* obj)
;int
mycircularqueuefront
(mycircularqueue* obj)
;int
mycircularqueuerear
(mycircularqueue* obj)
;bool mycircularqueueisempty
(mycircularqueue* obj)
;bool mycircularqueueisfull
(mycircularqueue* obj)
;void
mycircularqueuefree
(mycircularqueue* obj)
;
C 模擬實現迴圈順序佇列
c 中也會經常用的線性表鍊錶,對比各自特點,線性表更適合完成棧的操作,因為線性表實際是陣列完成的,資料依次挨著排放,不需要前插把資料依次後移。而鍊錶更適合佇列的操作,而鍊錶為了方便資料的尾插,頭刪,推出了帶頭節點的迴圈佇列。一下就是實現 帶頭的迴圈順序佇列 include using namespa...
C語言 模擬實現memcpy
模擬實現記憶體拷貝函式memcpy 該特點與strcpy 比較就是不管是不是string型別均可以比較,只是單純記憶體的比較。void my memcpy void p1,const void p2,size t count char dest char p1 char src char p2 si...
C語言模擬實現strncpy strcat
模擬實現strncpy 先演示一下strncpy的效果 如下 include include void main void 執行結果 通過以上演示可以看出,strncpy實現的是用乙個固定的字串去替換原字串中的某段字元,可以設定乙個迴圈,來實現字元的替換,如果它只有乙個字元要替換,則迴圈執行一次,設...