#include<stdio.h>
#include<stdlib.h>
typedef struct Node{
int data;
struct Node* next;
}Node;
typedef struct Queue{
Node* tailnode;
Node* frontnode;
int size;
}Queue;
//创建节点
Node* createnode(int data){
Node* newnode=(Node*)malloc(sizeof(Node));
newnode->next=NULL;
newnode->data=data;
return newnode;
}
//创建队列
Queue* createqueue(){
Queue* myqueue=(Queue*)malloc(sizeof(Queue));
myqueue->size=0;
myqueue->frontnode=myqueue->tailnode=NULL;
return myqueue;
}
//入队
void push(Queue* myqueue,int data){
Node* newnode= createnode(data);
if(myqueue->size==0) {
myqueue->tailnode = myqueue->frontnode = newnode;
} else{
myqueue->tailnode->next=newnode;
myqueue->tailnode=newnode;
}
myqueue->size++;
}
//出队
void pop(Queue* myqueue){
if(myqueue->size==0){
printf("队为空,无法出栈");
return;
}
Node* pnode=myqueue->frontnode->next;
free(myqueue->frontnode);
myqueue->frontnode=pnode;
myqueue->size--;
}
//获取队头元素
int front(Queue* myqueue){
if(myqueue->size>0){
return myqueue->frontnode->data;
}
}
//print
void printqueue(Queue* myqueue){
Node* pmove=myqueue->frontnode;
while(pmove){
printf("%d\t",pmove->data);
pmove=pmove->next;
}
printf("\n");
}
int main(){
Queue* Myqueue=createqueue();
for(int i=0;i<=5;i++){
push(Myqueue,i);
}
printqueue(Myqueue);
printf("%d\n", front(Myqueue));
for(int i=0;i<2;i++){
pop(Myqueue);
}
printqueue(Myqueue);
printf("%d", front(Myqueue));
return 0;
}
队列(C)
最新推荐文章于 2024-07-12 21:20:02 发布