#include <stdio.h>
#include <malloc.h>
typedef struct linknode {
int data;
struct linknode* next;
}*linknodeptr;
typedef struct linkqueue {
linknodeptr front;
linknodeptr rear;
}*linkqueueptr;
linkqueueptr initqueue() {
linkqueueptr resultptr = (linkqueueptr)malloc(sizeof(struct linkqueue));
linknodeptr headerptr = (linknodeptr)malloc(sizeof(struct linknode));
headerptr->next = NULL;
resultptr->front = headerptr;
resultptr->rear = headerptr;
return resultptr;
}
void outputlinkqueue(linkqueueptr paraqueueptr) {
linknodeptr tempptr = paraqueueptr->front->next;
while (tempptr != NULL) {
printf("%d ", tempptr->data);
tempptr = tempptr->next;
}
printf("\r\n");
}
void enqueue(linkqueueptr paraqueueptr, int paraelement) {
linknodeptr tempnodeptr = (linknodeptr)malloc(sizeof(struct linknode));
tempnodeptr->data = paraelement;
tempnodeptr->next = NULL;
paraqueueptr->rear->next = tempnodeptr;
paraqueueptr->rear = tempnodeptr;
}
int dequeue(linkqueueptr paraqueueptr) {
int resultvalue;
linknodeptr tempnodeptr;
if (paraqueueptr->front == paraqueueptr->rear) {
printf("the queue is empty.\r\n");
return -1;
}
tempnodeptr = paraqueueptr->front->next;
resultvalue = tempnodeptr->data;
paraqueueptr->front->next = paraqueueptr->front->next->next;
if (paraqueueptr->rear == tempnodeptr) {
paraqueueptr->rear = paraqueueptr->front;
}
tempnodeptr = NULL;
return resultvalue;
}
void testlinkqueue() {
linkqueueptr tempqueueptr;
tempqueueptr = initqueue();
enqueue(tempqueueptr, 10);
enqueue(tempqueueptr, 30);
enqueue(tempqueueptr, 50);
outputlinkqueue(tempqueueptr);
printf("dequeue gets %d\r\n", dequeue(tempqueueptr));
printf("dequeue gets %d\r\n", dequeue(tempqueueptr));
printf("dequeue gets %d\r\n", dequeue(tempqueueptr));
printf("dequeue gets %d\r\n", dequeue(tempqueueptr));
enqueue(tempqueueptr, 8);
outputlinkqueue(tempqueueptr);
}
int main() {
testlinkqueue();
return 1;
}
作业链队列
最新推荐文章于 2024-09-30 13:43:16 发布