單鏈表實現佇列鏈式儲存

2021-08-11 01:47:53 字數 1721 閱讀 2097

/*用單鏈表實現佇列的鏈式儲存*/

/* 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...