(학 빈 강의) 데이터 구조 학습 편 (4) - 스 택 의 CRUD 조작

창고.
창 고 는 상자 와 유사 하 다.
정적 스 택, 동적 스 택.
 
스 택 작업
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>

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 empty(PSTACK);
bool pop(PSTACK, int *);
void clear(PSTACK p);

int main(void)
{
	STACK s;
	int val;

	init(&s);
	push(&s, 1);
	push(&s, 2);
	push(&s, 3);
	push(&s, 4);
	push(&s, 5);
	push(&s, 6);
	push(&s, 7);
	traverse(&s);

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

창 고 는 주로 표현 식 값 구하 기, 버퍼 처리, 미로, 함수 호출, 중단...

좋은 웹페이지 즐겨찾기