爱问知识人 爱问教育 医院库

数据结构栈中元素有0怎么办?

首页

数据结构栈中元素有0怎么办?

数据结构栈中元素有0怎么办?用顺序栈的话结果存不进去,怎么办?

提交回答

全部答案

    2014-07-24 11:36:15
  •   你看看这个例子吧
    */
    # include "stdio。h"
    # include "stdlib。h"
    # define STACK_INIT_SIZE 10/*存储空间初始分配量,为了突出stackincrement有用 
                               此处改小点为10(没有分号)*/
    # define stackincrement 10/*存储空间分配增量,因为是顺序存储结构
                               一次分配固定的内存,本题是100个,而不是
                               动态分配存储空间,所以需要定义一个增量*/
    typedef int SElemType;
    typedef struct
    {
     SElemType *base;//栈底指针,栈构造之前和销毁之后,其值为NULL
     SElemType *top;//栈顶指针
     int stacksize;//当前已经分配的存储空间,以元素为单位
    }SqStack;
    void print(SElemType c)
    {
     printf("%d ",c);
    }
    //构造一个空栈S
    void InitStack(SqStack * S)
    {
     if (! ((* S)。
      base = (SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType))))//一次分配10个int类型的空间 { exit(-1); } (* S)。top = (* S)。
      base; (* S)。stacksize = STACK_INIT_SIZE; } //将元素e插入栈顶 void Push(SqStack * S,SElemType e) { if ((* S)。top-(* S)。base >= (* S)。
      stacksize)//栈满,利用realloc增加存储空间每次增加stackincrement个int类型空间 { (* S)。base = (SElemType *)realloc((* S)。base,((* S)。stacksize+stackincrement)*sizeof(SElemType)); if (!(* S)。
      base) { exit (-1); } (* S)。top = (* S)。base + (* S)。stacksize; (* S)。stacksize = (* S)。stacksize + stackincrement; } *((* S)。
      top)++ = e; } //从栈底到栈顶依次对栈中每个元素调用函数visit void StackTraverse(SqStack S,void (* visit)(SElemType)) { while (S。top > S。
      base) { visit(*(S。base)++); } printf("\n"); } int main(void) { int j; SqStack s; SElemType e; InitStack(&s); printf("初始化后栈s的空间为%d\n",s。
      stacksize); for (j=1; j<=12; ++j) { Push(&s,j); } printf("操作完后,栈s的空间为%d\n",s。stacksize);/*第一次只分配了10个空间 但需要压入12个元素 所以需要增加stacksize个*/ printf("栈中的元素为:"); StackTraverse(s,print); return 0; } /* 在vc++6。
      0中的输出结果: ------------------------ 初始化后栈s的空间为10 操作完后,栈s的空间为20 栈中的元素为:1 2 3 4 5 6 7 8 9 10 11 12 ------------------------------。
      

    L***

    2014-07-24 11:36:15

类似问题

换一换

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):