今日日誌3
姓名:蔣思雨
日期:2018.9.12
今日學習任務:
(1)棧和佇列的區別
(2)佇列的進出方法
(3)佇列的用法
今日任務完成情況:
根據老師的要求,**量大約500。
今日開發中出現的問題彙總:
還是編寫程式下問題,一些基本語法錯誤導致程式不能編譯成功。
今日未解決問題:
佇列的運用還不太熟悉
今日開發收穫:
(1)棧 :先進後出 佇列 : 先進先出 (順訊儲存 鏈式儲存)
(2)隊頭(front):取出資料
隊尾(rear):存放資料
(3)佇列的順序儲存 : 迴圈佇列
空對:隊頭隊尾重合
隊尾指標:指向最後乙個元素的後乙個
迴圈佇列長度:(rear-front +maxsize)%maxsize (列:5%7 =5)
判斷佇列是否滿(rear + 1) % maxsize== front
自我評價:雖然還是有很多小問題,但是比之前能夠自己找出一些錯誤並改正。
課上練習:
main.c
#include "queue.h"
#include
int main()
else
for(i = 0;i<10;i++)
else
}for(i = 0;i<6;i++)
else
}ret = lengthqueue(queue);
printf("length is %d\n",ret);
ret = clearqueue(queue);
if(ret == success)
else
ret = lengthqueue(queue);
printf("length is %d\n",ret);
ret=emptyqueue(queue);
if(success == ret)
else
ret = destroyqueue(&queue);
if(ret == success)
else
return
0;}
queue.h
#ifndef queue_h
#define queue_h
#define success 1000
#define failure 1001
struct node //jiedianxinxi
;typedef struct node node;
struct queue //duiliexinxi
;typedef struct queue q;
int initqueue(q **q);
int enterqueue(q *q,int e);
int deletequeue(q *q);
int lengthqueue(q *q);
int clearqueue(q *q);
int emptyqueue(q *q);
int destroyqueue(q **q);
#endif
queue.c
#include
"queue.h"
#include
int initqueue(q **q)
(*q) = (q *)malloc(sizeof(q)); //geiduiliexinxishenqingkongjian
if(null
== (*q))
node *p = (node *)malloc(sizeof(node)); //toujiedianshenqingkongjian
if(null
== p)
(*q)->front = (*q)->rear = p; //duitouzhizhen duiweizhizhendouzhixiangtoujiedian
return success;
}int enterqueue(q *q,int e)
node *p = (node *)malloc(sizeof(node));
if(null
== p)
p->next =
null; //zhizhenyu
p->
data
= e; //shujuyu
q->rear->next = p;
q->rear = p;
return success;
}int deletequeue(q *q)
if(q->rear == q->front) //kongdui
node *p = q->front->next;
int e = p->
data;
q->front->next = p->next;
free(p);
if(q->rear == p)
return e;
}int lengthqueue(q *q)
int length =
0; node *p = q->front->next;
while(p)
return length;
}int clearqueue(q *q)
node *p = q->front->next;
while(p)
q->rear=q->front; //shanwansuoyoujiedian,duiweizhizhenzhixiangkaitou
return success;
}int emptyqueue(q *q)
return (q->front == q->rear) ? success : failure;
}int destroyqueue(q **q)
free((*q)->front);
free(*q);
*q =
null;
return success;
}
蘇嵌日誌3
蘇嵌日誌3 姓名 翟雨婷 日期 2018年9月12日 今日學習任務 學習佇列結構的知識。編寫 約500行。今日學習問題 程式較長,基礎比較薄弱,含義不能理解透徹。今日學習收穫 今天學習了關於佇列的知識。如隊頭,隊尾,進隊,出隊,空隊等編寫方法。了解了佇列的特點和屬性。編寫了鏈式儲存和順序儲存佇列的簡...
蘇嵌日誌3
main.c include include queue.h include int main else if ret success ret emptyqueue queue if ret success else if ret failure for i 0 i 10 i else if ret...
蘇嵌日誌3
今日學習任務 複習棧和佇列的相關知識點,佇列的順序是先進先出,學習順序儲存和鏈式儲存 今日任務完成情況 佇列 先進先出 隊頭 取出資料 隊尾 存放資料 1 對列的順序儲存 迴圈佇列 2 空隊 就是隊頭隊尾重合 3 對尾指標,指向最後乙個元素的後乙個 容量為7,則實際儲存為6 4 迴圈佇列長度 rea...