佇列是一種操作受限的線性表,其限制條件為允許在表的一端進行插入,而在表的另一端進行刪除。插入的一端叫做隊尾,刪除的一端叫做隊頭。向佇列中插入新元素的行為稱為進隊,從佇列中刪除元素的行為稱為出隊。
佇列的特點是先進先出。舉例:火車從山洞一端開進,從山洞另一端開出,車廂好比乙個個元素,最先進入山洞的車廂先出,後進山洞的車廂後出。
**:
typedef struct sqqueuesqqueue;
(1)隊空狀態:
qu.front ==qu.rear
(2)隊滿狀態:
(qu->rear+1)%maxsize ==qu->front
(1)進佇列:
qu->rear=(qu->rear+1)%maxsize;
qu->data[qu->rear]=x;
(2)出佇列:
*y=qu->data[qu->front];
qu->front=(qu->front+1)%maxsize;
#include#include#define maxsize 50
typedef struct sqqueuesqqueue;
//建立迴圈佇列
sqqueue initqueue()
sq->rear=sq->front=0;
return *sq;
}//判斷迴圈佇列是否為空
int isempty(sqqueue qu)
//元素進迴圈佇列
int enqueue(sqqueue *qu,int x)
qu->rear=(qu->rear+1)%maxsize;
qu->data[qu->rear]=x;
return 1;
}//元素出迴圈佇列
int dequeue(sqqueue *qu,int *y)
*y=qu->data[qu->front];
qu->front=(qu->front+1)%maxsize;
return 1;
}//列印迴圈佇列
int printqueue(sqqueue qu)
while(qu.rear !=qu.front)
return 1;
}void main()
結果:
**:
//鏈佇列結點結構
typedef struct qnodeqnode;
//鏈佇列結構
typedef struct liqueueliqueue;
(1)隊空
lq->front==null || lq->rear==null
(1)進佇列:
lq->rear->next=p;
lq->rear=p;
(2)出佇列:
p=lq->front;
lq->front=p->next;
x=p->data;
free(p);
#include#include//鏈佇列結點結構
typedef struct qnodeqnode;
//鏈佇列結構
typedef struct liqueueliqueue;
//建立鏈佇列
liqueue initqueue()
lq->front=lq->rear=null;
return *lq;
}//判斷鏈佇列是否為空
int isempty(liqueue *lq)else
}//元素進鏈佇列
void enqueue(liqueue *lq,int x)else
}//元素出鏈佇列
int dequeue(liqueue *lq,int *y)
if(lq->front==lq->rear)else
*y=p->data;
free(p);
return 1;
}//列印鏈佇列
void printqueue(liqueue lq)
while(lq.front!=null)
}void main()
結果:
C語言之結構體
一 什麼是結構體 結構體是不同型別的資料組合成乙個有機整體。例如 學生的學號 姓名 性別 成績 位址 這些都是乙個學生的屬性,把這些屬性組織成乙個組合,組合中包含不同的資料型別,c和c 允許指定這樣的資料型別,稱為結構體。struct student 申明乙個結構體型別 struct是結構體申明的關...
C語言之結構體
在c語言中,可以使用結構體 struct 來存放一組不同型別的資料。結構體的定義形式為 struct 結構體名 結構體是一種集合,它裡面包含了多個變數或陣列,它們的型別可以相同,也可以不同,每個這樣的變數或陣列都稱為結構體的成員 member 請看下面的乙個例子 struct stu stu 為結構...
c語言之棧結構
棧是一種只能在一端進行插入或者刪除操作的線性表 說明棧還是線性表結構,只是操作受限而已 其中允許進行插入或者刪除操作的一端稱為棧頂。棧的插入和刪除一般叫入棧和出棧。棧的順序儲存結構叫做順序棧,棧的鏈式儲存結構叫做鏈棧。define maxsize 100 typedef struct sqstack...