데이터 구조 입문 - 창고

2644 단어
정의: '선진 후 출' 을 실현 할 수 있 는 저장 구조
분류:
정적 스 택
동적 스 택
알고리즘:
출고
창고 에 넣다.
코드 구현:
많이 두 드 리 고, 많이 두 드 리 고, 후기 에 개선 하 다.
#include 
#include 
#include 


typedef struct Node
{
    int data;
    struct Node * pNext;
}NODE , * PNODE;


typedef struct Stack
{
    PNODE pTop;
    PNODE pBottom;
}STACK , * PSTACK;


void init(PSTACK);
void push(PSTACK , int);
void traverse(PSTACK);
bool pop(PSTACK , int *);
void clear(PSTACK pS);


int main(void)
{
    STACK S; // STACK    struct Stack
    int val;

    init(&S); //          

    push(&S , 1); //   
    push(&S , 8);
    push(&S , 23);
    push(&S , 26);
    push(&S , 34);
    push(&S , 45);
    push(&S , 76);
    push(&S , 88);
    traverse(&S); //     

    if(pop(&S , &val))
    {
        printf("     %d
", val ); traverse(&S); printf("
"); clear(&S); traverse(&S); } else { printf("
"); } } void init(PSTACK pS) { pS->pTop = (PNODE)malloc(sizeof(NODE)); if (NULL == pS->pTop) { printf("
"); exit(-1); } else { pS->pBottom = pS->pTop; pS->pTop->pNext = NULL; // pS->pBottom->pNext = NULL } } void push(PSTACK pS, int val) { PNODE pNew = (PNODE)malloc(sizeof(NODE)); pNew->data = val; pNew->pNext = pS->pTop; // pS->pTop = pNew; return; } void traverse(PSTACK pS) { PNODE p = pS->pTop; while(p != pS->pBottom) { printf("%d ", p->data); p = p->pNext; } printf("
"); return; } bool empty(PSTACK pS ) { if (pS->pTop == pS->pBottom) return true; else return false; } // pS , bool pop(PSTACK pS , int *val) { if (empty(pS)) { return false; } else { PNODE p = pS->pTop; *val = p->data; pS->pTop = p->pNext; free(p); p = NULL; return true; } } // void clear(PSTACK pS) { if (empty(pS)) { return; } else { PNODE p = pS->pTop; PNODE q = NULL; while(p != pS->pBottom) { q = p->pNext; free(p); p = q; } pS->pTop = pS->pBottom; } }

적용:
함수 호출
중단
표현 식 값 구하 기
메모리 할당
버퍼 처리
미궁

좋은 웹페이지 즐겨찾기