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 }
  • 相关阅读:
    开源软件
    delphi 语法 点滴总结clientdataset
    combobox 下拉框 高度 调节 呵呵
    Delphi7中ClientDataSet的排序
    clientdataset 修改记录 成功
    http://bbs.csdn.net/topics/340046630 dbgrid怎么获取当前记录值
    Delphi中StrToDateTime函数TFormatSettings参数的使用
    IncSecond:将一个TDateTime变量加减一定数量的秒数
    clientdataset 做为 单机数据库的 使用 学习
    cmake命令用法整理list命令
  • 原文地址:https://www.cnblogs.com/yinghualuowu/p/5437678.html
Copyright © 2011-2022 走看看