zoukankan      html  css  js  c++  java
  • 数据结构

    《数据结构》严蔚敏

    头文件Stacksq.h

     1 #ifndef Stacksq_H
     2 #define Stacksq_H
     3 #define STACK_INIT_SIZE 100 
     4 #define INCREMENTSIZE 10
     5 #define status int
     6 #define ElemType int
     7 #define OK 1
     8 #define FALSE 0
     9 typedef struct  
    10 {
    11     ElemType *base;
    12     ElemType *top;
    13     int stacksize;
    14 }SqStack;
    15 status InitStack(SqStack&);
    16 status DestroyStack(SqStack&);
    17 status ClearStack(SqStack&);
    18 status StackEmpty(SqStack);
    19 status StackLength(SqStack);
    20 status GetTop(SqStack, ElemType&);
    21 status Push(SqStack&, ElemType);
    22 status Pop(SqStack&, ElemType&);
    23 status Print(SqStack);
    24 #endif 

    函数实现

      1 #include"Stacksq.h"
      2 #include<iostream>
      3 using namespace std;
      4 status InitStack(SqStack&s)
      5 //操作结果:构造一个空栈S  
      6 {
      7     s.base = (ElemType*)malloc(STACK_INIT_SIZE*sizeof(ElemType));
      8     if (s.base == NULL)
      9     {
     10         return -1;
     11     }
     12     s.top = s.base;
     13     s.stacksize = STACK_INIT_SIZE;
     14     return OK;
     15 }
     16 status DestroyStack(SqStack&s)
     17 //初始条件:栈s已存在  
     18 //操作结果:栈s已被销毁  
     19 {
     20     free(s.base);
     21     s.base = s.top = NULL;  //s.bottom的值为NULL,表示顺序栈不存在   
     22     s.stacksize = 0;
     23     return OK;
     24 }
     25 
     26 status ClearStack(SqStack &s)
     27 //初始条件:栈s已存在  
     28 //操作结果:将s清为空栈  
     29 {
     30     if (s.base)
     31     s.top = s.base;  //s.top == s.base作为顺序栈空的标记  
     32     return OK;
     33 }
     34 
     35 status StackEmpty(SqStack s)
     36 //初始条件:栈s已存在  
     37 //操作结果:若栈s为空栈,则返回TRUE,否则FALSE  
     38 {
     39     if (s.top == s.base)
     40         return OK;
     41     else
     42         return FALSE;
     43 }
     44 
     45 status StackLength(SqStack s)
     46 //初始条件:栈s已存在  
     47 //操作结果:返回s的元素个数,即栈的长度  
     48 {
     49     return s.top - s.base;
     50 }
     51 
     52 status Push(SqStack &s, ElemType e)
     53 //初始条件:栈s已存在  
     54 //操作结果:插入元素e成为新的栈顶元素  
     55 {
     56     if (s.top - s.base >= s.stacksize)
     57     {
     58         s.base = (ElemType*)realloc(s.base, (s.stacksize+INCREMENTSIZE)*sizeof(ElemType));
     59         if (s.base == NULL){
     60             return -1;
     61         }
     62         s.top = s.base + s.stacksize;
     63         s.stacksize += INCREMENTSIZE;
     64     }
     65     *s.top++ = e;
     66     return OK;
     67 }
     68 
     69 status Pop(SqStack &s, ElemType &e)
     70 //初始条件:栈s已存在且非空  
     71 //操作结果:删除s的栈顶元素,并且用e返回其值  
     72 {
     73     if (StackEmpty(s))
     74     {
     75         return -1;
     76     }
     77     e = *--s.top;
     78     return OK;
     79 }
     80 
     81 status GetTop(SqStack s, ElemType &e)
     82 //初始条件:栈s已存在且非空  
     83 //操作结果:用e返回s的栈顶元素  
     84 {
     85     if (StackEmpty(s))
     86     {
     87         return 0;
     88     }
     89     return *(s.top - 1);
     90 }
     91 
     92 status Print(SqStack s)
     93 //初始条件:栈s已存在且非空  
     94 //操作结果:从栈底开始依次输出
     95 {
     96     if (s.base == NULL||StackEmpty(s))
     97     {
     98         return -1;
     99     }
    100     for (int i = 0; i < StackLength(s); i++)
    101         cout << s.base[i] << endl;
    102     return OK;
    103 }
  • 相关阅读:
    WPF添加ResourceDictionary后【The Property "Resource" can only be set once】问题
    WPF中获取匿名(Anonymous)对象的键值方法(例如DataGrid绑定List<无名元素>时)
    安装Win10到移动硬盘的利器:WTGA
    xcodebuild 能在模拟器上运行测试啦
    Jenkins Mac slave 遇到 git: 'credential-osxkeychain' is not a git command. 错误
    远程调试UWP遇到新错误Could not generate the root folder for app package ......
    开始学习python
    文件打包
    统计 某个目录下 所有的文件的行数
    根据进程名称获取进程id
  • 原文地址:https://www.cnblogs.com/yinghualuowu/p/5437678.html
Copyright © 2011-2022 走看看