栈和队列简单代码实现

来源:互联网 发布:ubuntu 14.04 重装 编辑:程序博客网 时间:2024/09/21 09:18
栈:后进先出
操作:

void push(MyStack *s,char x)//x压入栈顶

{

    s->element[s->top]=x;

    s->top++;

}


void pop(MyStack *s)//将栈顶元素删除

{

    s->top--;

}


int IsEmpty(MyStack *s)//判断栈是否为空,栈空返回1

{

    if (s->top==0) {

        return 1;

    }else

    {

        return 0;

    }

}


void ClearStack(MyStack *s)//清空栈

{

    s->top=0;

}


void DisplayStack(MyStack *s)//显示从栈底到栈顶所有的元素

{

    int i;

    if (s->top==0) {

        printf("栈为空!");

    }else

    {

        for (i=0; i<s->top; i++) {

            printf("%c",s->element[i]);

        }

    }

}



队列:先进先出
操作:


int queue [MAX_SIZE]={};//存放整形数据的队列

int front =-1;//队列头

int rear =-1;//队列尾



//入队,参数为进入队列的元素

void add(int value)

{

    if (rear>=MAX_SIZE-1) {

        printf("The queue is full.\n");

    }else

    {

        queue[++rear]=value;//队列尾添加新元素

    }

}


//出队,返回值为队列的元素

int del()

{

    int temp;

    if (front==rear) {

        printf("The queue is empty.\n");

        return -1;

    }else

    {

        temp=queue[++front];//取出队列头的元素

        queue[front]=0;//将队列头元素值置为0

        return temp;//返回队列头的元素

    }

}


//显示队列中所有元素

void DisplayQueue()

{

    int i=0;

    for (i=0; i<=MAX_SIZE; ++i) {

        if (queue[i]!=0) {//打印队列中不为0的元素,为0代表已出队

            printf("[%d]",queue[i]);

        }

    }

}


0 0
原创粉丝点击