国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

舊雨新知9的個人空間 http://m.qingdxww.cn/space-uid-41802.html [收藏] [復制] [RSS]

博客

順序棧的各種基本運算

已有 1831 次閱讀2011-8-10 13:08

實驗內容與要求:

 

編寫一個程序,實現順序棧的各種基本運算,并在基礎上完成以下功能:

1)       初始化順序棧;

2)       判斷順序棧是否為空;

3)       依次進棧元素a,b,c,d,e

4)       判斷順序棧是否為空;

5)       輸出棧長度;

6)       輸出從棧頂到棧底的元素;

7)       讀出棧頂元素;

8)       刪除棧頂元素;

9)       輸出從棧頂到棧底的元素;

10)    判斷順序棧是否為空;

11)    釋放棧。

 

 

代碼如下:

 

#include<stdio.h>

#include<malloc.h>

#include<stdlib.h>

 

#define TRUE  1

#define FALSE 0

#define OK 1

#define ERROR 0

#define NULL  0

#define OVERFLOW -2

 

typedef int Status;

typedef char SElemType;

Status visit(SElemType e);

 

#define STACK_INIT_SIZE  100  // 棧存儲空間的初始分配量

#define STACKINCREMENT  10    // 存儲空間分配增量

typedef struct {

   SElemType  *base;            // 存儲數據元素的數組

   SElemType  *top;             // 棧頂指針

   int stacksize;               // 當前分配的棧空間大小,sizeof(SElemType)為單位

}SqStack;

 

Status InitStack (SqStack &S) {

       // 構造一個空棧S

       S.base = (SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType));

       if (!S.base) exit (OVERFLOW);

       S.top = S.base;

       S.stacksize = STACK_INIT_SIZE;

       return OK;

}// InitStack

 

Status DestroyStack (SqStack &S) {

       // 銷毀棧S

       free(S.base);

       S.base=NULL;

       S.top=NULL;

       S.stacksize=0;

       return OK;

}// DestroyStack

 

Status StackEmpty (SqStack S) {

       // 判斷棧S是否為空

       if(S.top==S.base)

              return TRUE;

       else

              return FALSE;

}// StackEmpty

 

Status Push (SqStack &S, SElemType e) {

       // 插入元素e為新的棧頂元素

       if (S.top - S.base >= S.stacksize) {

              // 棧滿,追加存儲空間

              S.base = (SElemType *) realloc(S.base,

                     (S.stacksize + STACKINCREMENT) * sizeof (SElemType));

              if (!S.base) exit (OVERFLOW);  //存儲分配失敗

              S.top = S.base + S.stacksize;

              S.stacksize += STACKINCREMENT;

       }

       *S.top++ = e;

       return OK;

}// Push

 

int StackLength (SqStack S) {

       // 返回S的元素個數,即棧的長度

       return S.top-S.base;

}// StackLength

 

Status GetTop (SqStack S, SElemType &e) {

       // 若棧不空,則用e返回S的棧頂元素

       if(S.top==S.base)  return ERROR;

       e = *(S.top-1);

       return OK;

}// GetTop

 

Status Pop (SqStack &S, SElemType &e) {

       // 若棧不空,則刪除S的棧頂元素

       if(S.top==S.base)  return ERROR;

       e= * --S.top;

       return OK;

}// Pop

 

Status StackTraverse (SqStack S, Status( *visit)(SElemType)) {

       // 遍歷棧

       while(S.top!=S.base)

    visit(*--S.top);

    return OK;

}// StackTraverse

 

void main() {

       // 主函數

       SElemType e;

       SqStack S;

       printf("(1)初始化順序棧。\n");

       InitStack(S);

       printf("(2)判斷順序棧是否為空:\n");

       StackEmpty(S);

       printf("(3)依次進棧元素a,b,c,d,e:\n");

       Push(S,'a');

       Push(S,'b');

       Push(S,'c');

       Push(S,'d');

       Push(S,'e');

       printf("(4)判斷順序棧是否為空:\n");

       StackEmpty(S);

       printf("(5)輸出棧長度:%d\n",StackLength(S));

       printf("(6)輸出從棧頂到棧底的元素:\n");

       StackTraverse(S,visit);

       printf("(7)讀出棧頂元素:%d\n",GetTop(S,e));

       printf("(8)刪除棧頂元素:%d\n",Pop(S,e));

       printf("(9)輸出從棧頂到棧底的元素:\n");

       StackTraverse(S,visit);

       printf("(10)判斷順序棧是否為空\n");

       StackEmpty(S);

       printf("(11)釋放棧。");

       DestroyStack(S);

}


路過

雞蛋

鮮花

握手

雷人

評論 (0 個評論)

facelist

您需要登錄后才可以評論 登錄 | 立即注冊

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
返回頂部
主站蜘蛛池模板: 91日韩在线 | 青青青国产色视频在线观看 | 久久久久蜜桃 | 国产成人久久精品麻豆二区 | 操操操网 | 亚色成人| 欧美青青 | 成人日韩视频 | 99视频在线看观免费 | 玖玖成人网 | 九九综合 | 日韩精品一区二区三区四区 | 日韩在线免费视频观看 | 四虎永久在线精品网址 | 亚洲视频在线观看一区 | 国产精品视频二区不卡 | 最新亚洲人成网站在线影院 | 欧美精品久久一区二区三区 | 久久99精品九九九久久婷婷 | 中文在线视频 | 免费日韩毛片 | 亚洲天堂手机在线 | 亚洲国产乱码在线精品 | 亚洲精品手机在线观看 | 色猫咪av在线网址 | 亚洲成年网| 欧美三级一区 | 国内精品亚洲 | 亚洲日韩精品欧美一区二区一 | 亚洲欧美色视频 | 免费视频 久久久 | 国产欧美一区二区精品性色 | 操女网站 | 亚洲成人精品久久 | 久久久国产精品免费看 | 国产未成女年一区二区 | 一区二区不卡在线观看 | 99久久99 | 亚洲视频在线一区二区 | 精品午夜久久福利大片免费 | 又粗又大的机巴好爽欧美 |