天天看點

剛學資料結構,寫了個C語言棧的頭檔案友善新手一塊用~

<span style="font-family: Arial, Helvetica, sans-serif;">基于CSDN一位大牛的頭檔案結構寫出來的。本人新手,可能有Bug。</span>
           
/*	資料類型定義	*/
#define Stack_size 25
#include <stdio.h>
#include <stdlib.h>


typedef struct
{
	int data[Stack_size] ;
	int top;
} Stack ;


/*	接口函數聲明	*/

/*	操作:	初始化一個棧	*/
/*	操作前:	pstack 指向一個棧	*/
/*	操作後:	如果記憶體配置設定成功, 該棧被初始化并被置為空, 傳回1; 否則傳回0	*/
/*	時間複雜度:	O(1)	*/
int InitStack (Stack ** pstack)
{
    *pstack=NULL;
    *pstack=(Stack *)malloc(sizeof(Stack));
    if(*pstack==NULL)
        {
            return 0;
        }
    (*pstack)->top=-1;
    return 1;
}
/*	操作:	确定一個棧是否為空	*/
/*	操作前:	pstack 指向一個已初始化的棧	*/
/*	操作後:	如果棧為空, 傳回1; 否則傳回0	*/
/*	時間複雜度:	O(1)	*/
int IsEmpty (Stack * pstack)
{
    if(pstack->top == -1)
        return 1;
    else
        return 0;
}
/*	操作:	将一個元素入棧	*/
/*	操作前:	pstack 指向一個已初始化的棧, panme 指向入棧的元素的資料	*/
/*	操作後:	如果記憶體配置設定成功, 元素資料域為 *pname 的元素入棧, 傳回1; 否則傳回0	*/
/*	時間複雜度:	O(1)	*/
int Push (Stack * pstack, int num)
{
    if(pstack->top>Stack_size)
    {
        printf("Push Error!");
        return 0;
    }
    pstack->top++;
    pstack->data[pstack->top]=num;
    return 0;
}

/*	操作:	從棧中彈出一個元素	*/
/*	操作前:	pstack 指向一個已初始化的棧, pname 指向一個元素資料域的資料	*/
/*	操作後:	如果棧不為空, 棧頂元素出棧并且 *panme 被指派, 傳回1; 否則傳回0	*/
/*	時間複雜度:	O(1)	*/
int Pop (Stack * pstack, int * pname)
{
    if(pstack->top<0)
    {
        return 0;
    }
    * pname = pstack->data[pstack->top];
    pstack->top--;
    return 1;
}


           

用以下代碼調試通過:

#include <stdio.h>
#include <stdlib.h>
#include "stack.h"


int main()
{
    Stack *ss;
    if(InitStack(&ss))
        printf("Initialized OK!\n");
    if(IsEmpty(ss))
        printf("True!\n");
    int e=1234;
    Push(ss,e);
    Pop(ss,&e);
    printf("%d",e);
    return 0;
}
           

繼續閱讀