数据结构--用C实现链式队列

    xiaoxiao2021-03-25  71

    #include <stdio.h> #include <stdlib.h> typedef struct node { int data; struct node *next; } Node; typedef struct queue { struct node *top; struct node *tail; } Queue; int gettop(struct queue *p) { return p->top-> data; } struct queue * push(struct queue *p,int x ) { struct node *q; q = (struct node *)malloc(sizeof(struct node)); q->data = x; q->next = NULL; if(p->top == NULL) p->top = q, p->tail = q; else { p->tail->next = q; p->tail =q; } return p; } struct queue * pop(struct queue *p) { struct node *q; if(!p->top) return NULL; q = (struct node *)malloc(sizeof(struct node)); q = p->top; p->top = p->top->next; free(q); return p; } int stempty(struct queue *p) { return(p->top==NULL ? 0 : 1); } int main() //用于测试 { struct queue *p; int n; //栈的长度 p = (Queue *)malloc(sizeof(Queue)); p->top = NULL; p->tail = NULL; int a[6] = {1,2,3,4,5,6},t = 7;//测试数据 int i; for(i=0; i<6; i++) { p = push(p,a[i]); } p = push(p,t); p = pop(p); p = pop(p); p = pop(p); printf("%d\n",gettop(p));//打印top的数 while(p->top !=NULL) { printf("%d ",p->top->data);//打印队列 printf("%d\n",stempty(p));//队列是否为空 p->top=p->top->next; } printf("%d\n",stempty(p)); return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-34084.html

    最新回复(0)