창고 의 창설

저 는 순서 표 에 있 는 창고 가 이해 하기 쉬 울 것 같 습 니 다. 여기 주석 을 쓰 지 않 겠 습 니 다. 모 르 는 어린이 신발 이 있 으 면 저 에 게 물 어보 세 요. 꼭 돌아 오 세 요. (아, 매일 간장, 시간 이 많 으 면 어 쩔 수 없어 요 ^ - ^):
#define STACK_SIZE 10
  • typedefint ElemType

  • typedef stack{
  • ElemType *top;

  • ElemType *base;
  • int stacksize;

  • }Stack;
    void CreateStack (Stack * s) / / 스 택 초기 화
  • {

  • s->base = (ElemType*)malloc(STACK_SIZE * sizeof(ElemType));
  • if (!s->base)

  • {
  • exit(0);

  • }
  • s->top = s->base;

  • s->stacksize = STACK_SIZE;
  • }

  • void Push (Stack * s, int elem) / / 스 택
  • {

  • if (s->top - s->base >= s->stacksize)
  • {

  • s->base = (ElemType*)realloc(s->base,(STACK_SIZE + 10) * sizeof(ElemType));
  • if (!s->base)

  • {
  • exit(0);

  • }
  • s->stacksize = s->stacksize + 10;

  • s->top = s->base + s->stacksize;
  • }

  • *(s->top) = elem;
  • s->top++;

  • }
  • void ShowStack(Stack *s)

  • {
  • Stack temp;

  • temp.top = s->top;
  • int i=1;

  • while (s->base != s->top)
  • {

  • /*s->top--;*/
  • printf ("% d 번 째 매개 변수 값 은:% d", i, * - (s - > top);
  • i++;
  • }

  • s->top = temp.top;
  • }

  • void Pop (Stack * s, int * elem) / / 출고
  • {

  • if (s->base == s->top)
  • {

  • exit(0);
  • }

  • *elem = *--(s->top);
  • }
  • void Clearstack (Stack * s) / / 지우 기
  • {
  • s->top = s->base;

  • }
    void Destroy Stack (Stack * s) / / 여 기 는 제 가 잘못 쓰 지 않 은 것 같 지만 소각 할 때 메모리 오류 가 발생 합 니 다. 아직 오 류 를 찾 지 못 했 습 니 다. 아 는 것 이 있 으 면 알려 주 십시오. ^ - ^
  • {

  • //int len = s->stacksize;
  • //for (int i=0; i
    // {
  • // free(s->base);

  • // s->base++;
  • // }
  • free(s->base);

  • s->base = s->top = NULL;
  • s->stacksize = 0;

  • }
    int StackLen (Stack * s) / / 창고 장
  • {

  • return s->top - s->base;
  • }
  • 좋은 웹페이지 즐겨찾기