# Include <iostream> using namespace STD; struct linkqueuenode {linkqueuenode * nextin; int value ;}; struct linkqueue {linkqueuenode * front; linkqueuenode * rear; bool isempty; int CNT ;}; linkqueue * createlinkqueue () {linkqueuenode * head = (linkqueuenode *) malloc (sizeof (linkqueuenode); linkqueue * link = (linkqueue *) malloc (sizeof (linkqueue )); link-> front = head; Link-> rear = head; Link-> isempty = true; Link-> CNT = 0; return link;} void inqueue (linkqueue * q, int value) {linkqueuenode * newin = (linkqueuenode *) malloc (sizeof (linkqueuenode )); newin-> nextin = NULL; newin-> value = value; q-> rear-> nextin = newin; q-> rear = newin; q-> isempty = (++ Q-> CNT) = 0);} bool dequeue (linkqueue * q, int * value) {If (! Q-> isempty) {linkqueuenode * TEP = Q-> front-> nextin; * value = TEP-> value; q-> front-> nextin = TEP-> nextin; q-> isempty = (-- q-> CNT) = 0); If (Q-> isempty) q-> rear = Q-> front; /// when clearing, You need to reset rear Delete TEP; return 1;} return 0;} bool Front (linkqueue * q, int * value) {If (! Q-> isempty) {linkqueuenode * TEP = Q-> front-> nextin; * value = TEP-> value; return 1;} return 0 ;} void output (linkqueue * q) {linkqueuenode * P = Q-> front-> nextin; while (P! = NULL) {cout <p-> value <""; P = p-> nextin;} cout <Endl;} void clearlinkqueue (linkqueue * q) {int X; while (! Q-> isempty) {dequeue (Q, & X); cout <x <"" ;}cout <Endl ;}void main () {int Len = 10; linkqueue * q = createlinkqueue (); int V; For (INT I = 0; I <Len; I ++) {v = rand () % 100; cout <v <""; inqueue (Q, v) ;}cout <Endl; output (Q); clearlinkqueue (Q); For (INT I = 0; I <Len; I ++) {v = rand () % 100; cout <v <""; inqueue (Q, v) ;}cout <Endl; output (Q); dequeue (Q, & V); cout <v <Endl; output (Q); Front (Q, & V ); cout <v <Endl; Output (Q); dequeue (Q, & V); cout <v <Endl; output (Q); dequeue (Q, & V ); cout <v <Endl; output (Q); For (INT I = 0; I <5; I ++) {v = rand () % 100; cout <v <""; inqueue (Q, v) ;}cout <Endl; output (Q); If (! Front (Q, & V) cout <"fail" <Endl; else output (Q); clearlinkqueue (Q); If (! Front (Q, & V) cout <"fail" <Endl; else output (Q); If (! Front (Q, & V) cout <"fail" <Endl; else output (Q); CIN> Len ;}
Queue Linked List Implementation