資料結構 順序佇列 和 用佇列實現楊輝三角形

2021-08-22 13:08:47 字數 2946 閱讀 2987

1. 佇列是特殊的線性表,

隊頭(front

):取出資料的一端;

隊尾(rear

):放入資料的一端;

2. 佇列的性質:先進先出

一般使用迴圈佇列(提高空間的利用率) 

空佇列:front == rear

佇列滿時會空出一格

判斷佇列滿的條件:

( rear + 1 ) % queuesize == front;

計算佇列長度:

( rear - front + queuesize ) % queuesize;

1. sequencequeue.h

#ifndef _sequencequeue_h

#define _sequencequeue_h

#define size 100

#define success 10000

#define failure 10001

#define true 10002

#define false 10003

struct queue

;typedef struct queue queue;

int initqueue(queue *q);

int emptyqueue(queue q);

int enterqueue(queue *q, int e);

int getfront(queue q);

int lengthqueue(queue q);

int deletequeue(queue *q);

int clearqueue(queue *q);

#endif

2. sequencequeue.c

#include "sequencequeue.h"

#include /*初始化*/

int initqueue(queue *q)

q->rear = q->front = 0;

return success;

}/*判斷是否為空*/

int emptyqueue(queue q)

/*進佇列*/

int enterqueue(queue *q, int e)

if((q->rear + 1) % size == q->front)

q->data[q->rear] = e;

q->rear = (q->rear + 1) % size;

return success;

}/*取隊頭元素*/

int getfront(queue q)

return q.data[q.front];

}/*隊長*/

int lengthqueue(queue q)

/*出隊*/

int deletequeue(queue *q)

int e = q->data[q->front];

q->front = (q->front + 1) % size;

return e;

}int clearqueue(queue *q)

q->front = q->rear;

return success;

}

3. testsequencequeue.c

#include "sequencequeue.h"

#include int main()

else

/*判斷是否為空*/

ret = emptyqueue(queue);

if(ret == true)

else

/*進佇列*/

for(i = 0; i < 10; i++)

else

}/*取隊頭元素*/

ret = getfront(queue);

if(failure == ret)

else

/*隊長*/

ret = lengthqueue(queue);

if(failure == ret)

else

/*出隊*/

for(i = 0; i < 4; i++)

else

}/*清空*/

ret = clearqueue(&queue);

if(failure == ret)

else

return 0;

}

主函式部分

#include "sequencequeue.h"

#include int main()

printf("請輸入楊輝三角形行數:\n");

scanf("%d", &n);

enterqueue(&queue1, 0); //對佇列1初始化

enterqueue(&queue1, 1);

enterqueue(&queue1, 0);

printf("楊輝三角形如下:\n");

printf("1\n");

for(i = 0; i < n - 1; i++)

clearqueue(&queue1); //清空佇列1

enterqueue(&queue2, 0); //佇列2中補0

len = lengthqueue(queue2);

for(j = 0; j < len; j++) //輸出佇列2

enterqueue(&queue1, ret);

}printf("\n");

}return 0;

}

資料結構順序佇列實現

如題 這是一套完整的可執行的 需要讀者有一定的基礎去閱讀 語言是用c語言實現 在c 環境中編寫 在c 中可直接執行 在c語言中需要改部分標頭檔案和輸出語句 標頭檔案 這要是 的宣告部分 ifndef head define head include using namespace std typed...

資料結構 分別實現順序佇列和鏈式佇列

順序佇列 seqqueue.h pragma once include include define title printf n s function define seqqueuemaxsize 1000 typedef char seqqueuetype typedef struct seqq...

資料結構 佇列實現(順序迴圈佇列 鏈式佇列)

佇列的介面 public inte ce qqueue 存在假溢位問題!不建議使用 使用模擬迴圈的方式避免假溢位 實現 package pers.zhang.queue author zhang date 2020 1 17 11 45 順序迴圈佇列 public class seqqueue im...