利用C语言实现一些简单的栈操作

来源:互联网 发布:双网卡双网络设置 编辑:程序博客网 时间:2024/05/22 08:07

1.获取栈中的最小值
参考了对该问题的解法,利用C语言实现了带基本功能和getMin功能的栈,同理还可以添加getMax功能,代码如下:

#include <stdio.h>#include <stdlib.h>#define MAX_STACK_SIZE 6typedef struct{    int stack[MAX_STACK_SIZE];    int top;}element;element init(){    element temp;    temp.top=-1;    return temp;}int isEmpty(element *data){    if(data->top==-1)        return 1;    else        return 0;}int isFull(element *data){    if(data->top>=MAX_STACK_SIZE-1)        return 1;    else        return 0;}int push(int value,element *data){    if(isFull(data)==1)        return 0;    else        data->stack[++(data->top)]=value;        return 1;}int pop(element *data){    if(isEmpty(data)==1)        return 0;    else        return data->stack[(data->top)--];} void getMin(element *data,element *min){    int i=0;    int value=0;    int minTop=0;    for(i=0;i<MAX_STACK_SIZE;i++)    {        printf("please input value to push into stack:\n");        scanf("%d",&value);        push(value,data);        if(min->top==-1)        {            push(value,min);        }        else        {            minTop=min->stack[min->top];            if(value<minTop)                push(value,min);            else                push(minTop,min);        }    }}print(element *data){    for(int i=data->top;i>=0;i--)    {        if(i>0)            printf("%d ->",data->stack[i]);        else            printf("%d",data->stack[i]);    }    printf("\n");}void main(){    element stackData,stackMin,stackMax;    stackData=init();       stackMin=init();    getMin(&stackData, &stackMin);    print(&stackData);    print(&stackMin);    printf("%d\n",stackMin.stack[stackMin.top]);}2.利用两个栈实现队列操作void doubleStack(element *stackPush, element *stackPop){    int i=0;    int value=0;    for(i=0;i<MAX_STACK_SIZE;i++)    {        printf("please input value to push into stack:\n");                scanf("%d",&value);                push(value,stackPush);          }    if(isEmpty(stackPop)==1)    {        while(stackPush->top>-1)        {            value=pop(stackPush);            push(value,stackPop);        }    }}
0 0
原创粉丝点击