/*用單鏈表實現佇列的鏈式儲存*/
/* fron指向單鏈表的頭結點,rear指向單鏈表的尾結點
因為單鏈表的頭結點做插入,刪除都比較方便,但是尾結點做插入方便,刪除不方便
故我們讓front指向頭結點利於做刪除操作,讓rear指向尾結點利於做插入操作
*/#include
#include
#define elementtype int
#define error -
1struct node;
typedef struct node *node;
struct qnode;
typedef struct qnode *
queue;
queue ptrq;
/*初始化鏈隊*/
void initqueue(queue ptrq)
elementtype deleteq(queue ptrq)
frontcell=ptrq->front;
if(ptrq->front==ptrq->rear) /*如果佇列只有乙個元素*/
ptrq->front=ptrq->rear=
null; /*刪除後佇列置為空*/
else
ptrq->front=ptrq->front->next;
frontelem=frontcell->
data;
free(frontcell); /*釋放被刪除的結點空間*/
return frontelem;
}void addq(elementtype item,queue ptrq)
newnode->
data
=item;
newnode->next=
null;
/*若鏈隊為空,則新結點既是隊首結點又是隊尾結點*/
if(ptrq->rear==
null)else
return;
}/*讀取隊首元素*/
int peekqueue(queue ptrq)
return ptrq->front->
data; /*返回隊首元素*/
}/*檢查鏈隊是否為空,若為空則返回1,否則返回0*/
int emptyqueue(queue ptrq)
else
}/*清除鏈隊中的所有元素*/
void clearqueue(queue ptrq)
/*迴圈結束後隊首指標已經為空*/
ptrq->rear=
null; /*置隊尾指標為空*/
return;
}int main(int argc,char *argv)
; int i;
initqueue(myqueue);
for(i=0;i<8;i++)
printf("delnode is %d\n",deleteq(myqueue));
printf("delnode is %d\n",deleteq(myqueue));
addq(68,myqueue);
printf("peeknode is %d\n",peekqueue(myqueue));
while(!emptyqueue(myqueue))
clearqueue(myqueue);
return 0;
}
單鏈表的建立(鏈式儲存)
資料結構程式設計練習 二 功能1 在建構函式完成帶頭結點單鏈表的初始化。功能2 輸入資料,利用尾插法完成鍊錶生成。功能3 求單鏈表表長。功能5 在第i個結點前插入值為x的結點。功能6 刪除鍊錶中第i個元素結點,需返回第i個結點是否存在的狀態,並返回刪除結點中儲存的資料。功能7 在析構函式中完成鍊錶記...
佇列 單鏈表實現
佇列,就是排隊,先到的站前面,先離開,後到的排後面,後離開。對應到計算機中,就是新增元素在隊尾,刪除元素是在隊頭,先進先出或後進後出。新增元素也叫入隊 enqueue 刪除元素也叫出隊 dequeue 當然還可以檢視隊頭元素,隊中元素個數,以及是否為空,所以佇列提供了api 就是enqueue,de...
Java佇列 鏈式儲存實現
佇列介面 public inte ce queue 鍊錶介面 public inte ce node 隊列為空丟擲該異常 public class queueemptyexception extends runtimeexception 單鏈表的定義 public class slnode impl...