程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 順序棧的c語言實現

順序棧的c語言實現

編輯:關於C語言

1.順序棧結構

typedef struct
{
        SElemType data[MAXSIZE];
        int top; /* 用於棧頂指針 */
}SqStack;


2.構造一個空棧S

Status InitStack(SqStack *S)
{ 
        /* S.data=(SElemType *)malloc(MAXSIZE*sizeof(SElemType)); */
        S->top=-1;
        return OK;
}


3.把S置為空棧

Status ClearStack(SqStack *S)
{ 
        S->top=-1;
        return OK;
}


4.若棧S為空棧,則返回TRUE,否則返回FALSE

Status StackEmpty(SqStack S)
{ 
        if (S.top==-1)
                return TRUE;
        else
                return FALSE;
}


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

int StackLength(SqStack S)
{ 
        return S.top+1;
}


6.若棧不空,則用e返回S的棧頂元素,並返回OK;否則返回ERROR

Status GetTop(SqStack S,SElemType *e)
{
        if (S.top==-1)
                return ERROR;
        else
                *e=S.data[S.top];
        return OK;
}


7. 插入元素e為新的棧頂元素

Status Push(SqStack *S,SElemType e)
{
        if(S->top == MAXSIZE -1) /* 棧滿 */
        {
                return ERROR;
        }
        S->top++;				/* 棧頂指針增加一 */
        S->data[S->top]=e;  /* 將新插入元素賦值給棧頂空間 */
        return OK;
}



8.若棧不空,則刪除S的棧頂元素,用e返回其值,並返回OK;否則返回ERROR

Status Pop(SqStack *S,SElemType *e)
{ 
        if(S->top==-1)
                return ERROR;
        *e=S->data[S->top];	/* 將要刪除的棧頂元素賦值給e */
        S->top--;				/* 棧頂指針減一 */
        return OK;
}


9.從棧底到棧頂依次對棧中每個元素顯示

Status StackTraverse(SqStack S)
{
        int i;
        i=0;
        while(i<=S.top)
        {
                visit(S.data[i++]);
        }
        printf("\n");
        return OK;
}


Status visit(SElemType c)
{
        printf("%d ",c);
        return OK;
}


參考<<大話數據結構>>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved