데이터 구조 학습 의 길 (3) 스 택 의 간단 한 실현
2471 단어 데이터 구조 학습
저 는 mac 시스템 에서 썼 기 때문에 include 가 필요 한 가방 은 다른 시스템 과 약간 다 를 수 있 습 니 다.
# include
# include
typedef struct Node{
int data;
struct Node * pNext;
}*PNODE, NODE;
typedef struct Stack{
struct Node * pButtom;
struct Node * pTop;
}*PSTACK, STACK;
void init(PSTACK);
void showStack(PSTACK);
bool isEmpty(PSTACK);
bool push(PSTACK, int);
bool pop(PSTACK, int *);
bool clear(PSTACK);
int main(void){
PSTACK pStack;
init(pStack);
showStack(pStack);
push(pStack, 5);
push(pStack, 1);
push(pStack, 4);
push(pStack, 9);
showStack(pStack);
int val;
pop(pStack, &val);
printf("%d
", val);
showStack(pStack);
clear(pStack);
showStack(pStack);
return 0;
}
void init(PSTACK pStack){
pStack->pButtom = (PNODE)malloc(sizeof(NODE));
if (pStack->pButtom==NULL){
printf("%s
", " !");
exit(-1);
}
pStack->pTop = pStack->pButtom;
pStack->pTop->pNext=NULL;
printf("%s
", " !");
return;
}
void showStack(PSTACK pStack){
if (isEmpty(pStack)){
printf("%s
", " !");
return;
}
PNODE p = pStack->pTop;
while(p!=pStack->pButtom){
printf("%d ", p->data);
p = p->pNext;
}
printf("
");
return;
}
bool push(PSTACK pStack, int val){
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if (pNew==NULL){
printf("%s
", " !");
return false;
}
pNew->data = val;
pNew->pNext = pStack->pTop;
pStack->pTop = pNew;
return true;
}
bool pop(PSTACK pStack, int * val){
if (isEmpty(pStack)){
printf("%s
", " , !");
return false;
}
PNODE p = pStack->pTop;
pStack->pTop = p->pNext;
* val = p->data;
free(p);
return true;
}
bool clear(PSTACK pStack){
if (isEmpty(pStack)){
printf("%s
", " , !");
return false;
}
PNODE p = pStack->pTop;
PNODE q = NULL;
while(p != pStack->pButtom){
q = p->pNext;
free(p);
p = q;
}
pStack->pTop = pStack->pButtom;
return true;
}
bool isEmpty(PSTACK pStack){
if (pStack->pTop == pStack->pButtom)
return true;
return false;
}
email: [email protected]
저작권 성명: 블 로그 작성 이 쉽 지 않 습 니 다. 전재 할 때 출처 를 밝 혀 주 십시오. 대단히 감사합니다!
https://blog.csdn.net/zyy_2018/article/details/79765642
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
계단 오르기 문제-귀속과 동태 기획제목. 한 사람이 계단을 오르면 그는 한 번에 한 단계 또는 두 단계를 걸을 수 있는데, 서로 다른 계단 수를 입력해서 몇 가지 다른 걷는 방법을 구할 수 있습니까? 샘플 입력 샘플 출력 세 가지 방법...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.