数据结构与算法——栈模拟队列(C语言)

文章目录


前言

大二,刚刚开始学数据结构与算法,写得不好。。。。


栈模拟队列

使用栈实现队列的下列操作:
1.init():初始化队列
2.push(x):将1个元素放入队列的尾部。
3.pop(): 从队列首部移除元素。
4.display():展示队列元素。

#include <stdlib.h>
#include <stdio.h>

typedef struct stack {
    int data;
    struct stack *next;
} Stack;

Stack *Init(int n) {
    Stack *top = NULL;
    int i;
    Stack *node;
    for (i = 1; i < n+1; i++) {
        node = (Stack *) malloc(sizeof(Stack));
        node->data = i;
        node->next = top;
        top = node;
        printf("入队: %d\n",node->data);
    }
    return top;
}

void Display(Stack *top) {
    Stack *p = top;
    while (p->next != NULL) {
        printf("%d ", p->data);
        p = p->next;
    }
    printf("%d ", p->data);
    printf("\n");
}

Stack *Push(Stack *top, int data) {
    Stack *node = (Stack *) malloc(sizeof(Stack));
    node->data = data;
    node->next = top;
    top = node;
    printf("入队: %d\n",top->data);
    return top;
}

Stack *Pop(Stack *top) {
    Stack *p = top;
    printf("出队:%d\n",p->data);
    top = top->next;
    free(p);
    return top;
}
Stack * Queue(Stack *top,int data){
    Stack *node = (Stack *) malloc(sizeof(Stack));
    node->data = data;
    node->next = top;
    top = node;
    return top;
}
int main() {
    Stack *z1, *z2,*p;
    z1 = Init(10);
    z2 = Init(0);
    p=z1;
    while (p->next!=NULL){
        z2=Queue(z2,p->data);
        p=p->next;
    }
    z2=Queue(z2,p->data);
    z2=Pop(z2);
    z2=Pop(z2);
    z2=Pop(z2);
    Display(z2);
}

总结

就离谱 算法也是很难。
上一篇:在vivado中添加支持pynq-2开发板文件【亲测】


下一篇:210 - Concurrency Simulator