zoukankan      html  css  js  c++  java
  • 算法7---栈及其基本操作实现

    有关栈的基本概念随便找一本书上面都有详细的介绍,在这里我用c语言只实现。

    这一部分包括一些基本的栈的操作,初始化,出栈,入栈,判空,判满,清空等操作。

      1 #include <Stdlib.h>
      2 #include <stdio.h>
      3 #include <string.h>
      4 
      5 #define MAXLEN 50
      6 
      7 typedef struct
      8 {
      9     int age;
     10     char name[10];
     11 }DATA;
     12 
     13 typedef struct stack
     14 {
     15     DATA data[MAXLEN];
     16     int top;   
     17 }stackType;
     18 
     19 stackType *inistack()
     20 {
     21     stackType *p;
     22     if (p=(stackType *)malloc(sizeof(stackType )))
     23     {
     24         p->top=0;
     25         return p;
     26     }
     27     return NULL;
     28 }
     29 
     30 int stackEmpty(stackType *s)
     31 {
     32     int flag;
     33     flag=(s->top==0);
     34     return flag;
     35 }
     36 
     37 int stackFull(stackType *s)
     38 {
     39     int flag;
     40     flag=(s->top==MAXLEN);
     41     return flag;
     42 }
     43 
     44 void clearStack(stackType *s)
     45 {
     46     s->top=0;
     47 }
     48 
     49 void freeStack(stackType *s)
     50 {
     51     if (s)
     52     {
     53         free(s);
     54     }
     55 }
     56 
     57 int pushStack(stackType *s,DATA data)
     58 {
     59     if ((s->top+1)>MAXLEN)
     60     {
     61         printf("overflow!
    ");
     62         return 0;
     63     }
     64     s->data[++s->top]=data;
     65     return 1;
     66 }
     67 
     68 DATA popStack(stackType *s)
     69 {
     70     if (s->top==0)
     71     {
     72         printf("empty stack!
    ");
     73         exit(0);
     74     }
     75     return (s->data[s->top--]);
     76 }
     77 
     78 
     79 DATA readStack(stackType *s)
     80 {
     81     if (s->top==0)
     82     {
     83         printf("the stack is empty!
    ");
     84         exit(0);
     85     }
     86     return (s->data[s->top]);
     87 }
     88 
     89 int main()
     90 {
     91     stackType *stack;
     92     DATA data,data1;
     93     stack=inistack();
     94     printf("push stack!
    ");
     95     printf("input name,age to push data!
    ");
     96     do
     97     {
     98         scanf("%s%d",data.name,&data.age);
     99         if (strcmp(data.name,"0")==0)
    100         {
    101             break;
    102         }
    103         else
    104         {
    105             pushStack(stack,data);
    106         }
    107     }while(1);
    108 
    109     do
    110     {
    111         printf("pop stack operation!
    ");
    112         data1=popStack(stack);
    113         printf("the pop stack data is (%s,%d)
    ",data1.name,data1.age);
    114     }while(1);
    115 
    116 
    117     freeStack(stack);
    118     return 0;
    119 
    120 }
  • 相关阅读:
    (转)CentOS 6.5下Redis安装详细步骤
    (转)FastDFS_v5.05安装配置
    Mybatis 动态获取字段值(不需要创建javabean)
    Apache+tomcat集群配置
    Get Started and Make Progress in Machine Learning
    NLTK 模块不完全介绍
    python __future__
    python __init__.py和__all__
    自然语言处理
    Python搜索路径
  • 原文地址:https://www.cnblogs.com/tao-alex/p/5879117.html
Copyright © 2011-2022 走看看