[데이터 구조] C 언어 는 스 택 의 스 택 진입, 스 택 나 가기, 옮 겨 다 니 기, 비우 기 등 작업 을 실현 합 니 다.

13953 단어 데이터 구조
링크 를 배 운 후에 스 택 을 배 웠 습 니 다. 코드 로 이 루어 지 려 고 했 지만 아르 바 이 트 를 해 야 합 니 다.
대신 의 지도 도 받 고 싶 습 니 다.
코드 를 보 세 요. 주석 이 맞지 않 는 곳 은 양해 해 주세요.
#include <stdio.h>

#include <stdlib.h>

#include <malloc.h>



//             

typedef struct node

{

    int member;            //   

    struct node * pNext;//   

}Node,*pNode;



//           

typedef struct stack

{

    pNode Top;            //  

    pNode Bottom;        //  

}Stack,* pStack;



void InitStack(pStack );        //           

bool Push(pStack ,int);            //             

void TraverseStack(pStack );    //         

bool Empty(pStack );            //              

int Pop(pStack );                //             

void Clear(pStack );            //          



int main(void)

{

    Stack s;                        //         

    int i;

    int num;

    int data;                        //               

    int re_num;                        //      Pop      

    InitStack(&s);

    printf("");

    scanf("%d",&num);

    for (i = 0;i < num;i++)

    {

        printf("  %d   :",i+1);

        scanf("%d",&data);

        if (Push(&s,data))                //      Push  

        {

            continue;

        }

        else

        {

            printf("
"); exit(-1); } } TraverseStack(&s); // printf(" : "); scanf("%d",&data); printf(""); for (i = 0; i < data;i++) { re_num = Pop(&s); // Pop , re_num; printf("%d ",re_num); } printf(""); TraverseStack(&s); printf("
"); Clear(&s); // printf(" ····
"); TraverseStack(&s); printf("
"); return 0; } // void InitStack(pStack ps) { ps->Top = (pNode)malloc(sizeof(Node)); // if (NULL == ps->Top) { printf("
"); exit(-1); } else { ps->Bottom = ps->Top; // ps->Top->pNext = NULL; // NULL; } return ; } // bool Push(pStack ps,int data) { pNode pNew = (pNode)malloc(sizeof(Node)); // if (NULL == pNew) { return false; } pNew->member = data; // member pNew->pNext = ps->Top; // ps->Top = pNew; // return true; } // void TraverseStack(pStack ps) { pNode pNew = ps->Top; while(pNew!= ps->Bottom) // { printf("%d ",pNew->member); // member pNew = pNew->pNext; // } return ; } // bool Empty(pStack ps) { if(ps->Top == ps->Bottom) // { return true; } else { return false; } } // int Pop(pStack ps) { pNode pSwap = NULL; int return_val; if (Empty(ps)) // { exit(-1); } else { return_val = ps->Top->member; // member return_val pSwap = ps->Top; // pSwap ps->Top = ps->Top->pNext; // free(pSwap); // return return_val; } } // void Clear(pStack ps) { pNode pNew = NULL; while (ps->Top != ps->Bottom) // { pNew = ps->Top; // ps->Top = ps->Top->pNext; // free(pNew); // } return ; }

 
 
오신 것 을 환영 합 니 다.

좋은 웹페이지 즐겨찾기