저장 성 빅 데이터 구조 스 택 의 실현 (배열)

//           (  )
#include
#include
#include 

#define ERROR NULL;
#define MAXSIZE 10

typedef int Position;
typedef int ElementType;

struct SNode {
	ElementType *Data; /*         */
	Position Top;      /*      */
	int MaxSize;       /*        */
};
typedef struct SNode *Stack;

Stack CreateStack(int MaxSize)
{
	Stack S = (Stack)malloc(sizeof(struct SNode));
	S->Data = (ElementType *)malloc(MaxSize * sizeof(ElementType));
	S->Top = -1;
	S->MaxSize = MaxSize;
	printf("S addr:%p  S->Data addr:%p 
", S, S->Data); return S; } bool IsFull(Stack S) { return (S->Top == S->MaxSize - 1); } bool Push(Stack S, ElementType X) { if (IsFull(S)) { printf(" "); return false; } else { S->Data[++(S->Top)] = X; return true; } } bool IsEmpty(Stack S) { return (S->Top == -1); } ElementType Pop(Stack S) { if (IsEmpty(S)) { printf(" "); return ERROR; /* ERROR ElementType , */ } else return (S->Data[(S->Top)--]); } int main() { Stack S = CreateStack(MAXSIZE); Push(S, 1); Push(S, 2); Push(S, 3); Push(S, 4); printf("top:%d
", S->Top); printf("%d
", Pop(S)); free(S->Data); free(S); _CrtDumpMemoryLeaks(); // system("pause"); return 0; }

좋은 웹페이지 즐겨찾기