데이터 구조 노트 스 택

선형 구조의 두 가지 흔 한 응용 창고
정의.
'선진 후 출' 을 실현 할 수 있 는 저장 구조
스 택 은 상자 와 유사 합 니 다.
분류 하 다.
정적 스 택
동적 스 택
알고리즘
창고 에서 나오다
창고 에 넣다
활용 단어 참조
함수 호출
인 터 럽 트
표현 식 값 구하 기
메모리 할당
버퍼 처리
미궁
실례
#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 pS);
void push(PSTACK pS,int val);
void traverse(PSTACK pS);
bool pop(PSTACK pS, int * pVal);
void clear(PSTACK pS);
bool empty(PSTACK pS);
int main()
{
	STACK S;    //        
	int val;

	init(&S);
	push(&S, 1);	///  
	push(&S, 2);
	push(&S, 3);
	push(&S, 4);
	push(&S, 5);
	traverse(&S);

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

좋은 웹페이지 즐겨찾기