1. 程式人生 > >Learing Log 3

Learing Log 3

姓名:劉星辰 今日學習任務 學習瞭解資料結構中佇列的結構;佇列中順序儲存結構及鏈式儲存結構的功能函式程式碼編寫 今日任務完成情況 本日任務按計劃完成,今日開發程式碼量:約500行 今日開發中出現的問題彙總 ①順序儲存佇列功能函式中進隊、出隊的程式碼實現功能的流程還存在一些不太清楚; ②鏈式儲存佇列功能函式,何時需要釋放結點,還不太明確。 今日未解決問題今日開發收穫 ①清楚了資料結構中佇列資料額結構模型; ②瞭解了佇列的特點和屬性; ③瞭解並完成了關於順序佇列的簡單功能函式程式碼編寫; ④瞭解並完成了關於鏈式佇列的簡單功能函式程式碼編寫。 ⑤熟悉了圖形介面進入文字編輯器進行程式碼編寫操作的流程。 自我評價

按開發規定完成了既定任務,今天相比昨天會主動在老師講解之前進行一些程式碼功能的編寫

佇列結構(兩個埠):先進先出 型別:順序儲存(連續)、鏈式儲存(不連續) 迴圈佇列(順序儲存)

空隊:隊頭隊尾重合 隊尾指標:指向最後一個元素的後一個(指標下標為MAXSIZE - 1) 迴圈佇列的長度

rearfront + MAXSIZE% MAXSIZE

判斷佇列是否滿

(rear + 1)% MAXSIZE == front;

用程式碼表示一個佇列

struct queue
{ 
    int *data;
    int front;
    int
rear; };

vim 單詞補齊快捷鍵Ctrl+N

順序儲存佇列功能函式: ★佇列初始化:front、rear同指向0,申請記憶體並讓data指標指向這塊空間。 ★進隊操作:①進隊判斷,如果隊滿,無法進隊。 ②操作隊尾,放入資料

q->data[q->rear]=e
q->rear=(q->rear+1)%MAXSIZE

★出隊操作:①出隊判斷,如果空隊,無法出隊。 ②操作隊頭,移出資料

int e=q->data[q->front]
q->front=(q->front+1
)%MAXSIZE

★求佇列長度:

(q.rear – q.front + MAXSIZE) % MAXSIZE;

★清除佇列:

q->rear = q->front;

★釋放佇列:釋放之前索要的空間,防止資料洩露。

free(q->data);   q->data = NULL;

鏈式儲存佇列功能函式: 相比順序儲存佇列,多一個節點資訊(資料域、指標域) ★佇列初始化:front、rear同指向頭結點,申請頭節點空間及佇列資訊空間。 ★進隊操作:不存在隊滿,有資料,就申請空間。新節點地址放進前一個指標域裡。

q->rear->next = p;    
q->rear = p;

★出隊操作:①出隊判斷,如果空隊,無法出隊。 ②操作對頭指標

q->front->next = p->next;  
free(p);

特:只剩一個節點的情況。

If (q-> == p)
{
    q->rear = q->front;
}

★求佇列長度:

Node *p = q ->front->next;   
while (p)  
{
    length++; 
    p = p->next 
}

★清除佇列:釋放節點後指向新的節點。最後要刪完所有節點,隊尾指標指向開頭。 ★判斷佇列是否為空:

(q->front == q->rear)? SUCCESS:FAILURE;

★銷燬佇列:釋放頭結點及佇列資訊;

free((*q->front);   free(*q);