데이터 구조 - 스 택 의 링크 구현
2605 단어 데이터 구조
1. 빈 스 택 만 들 기
우선 창고 꼭대기 지침 이 창고 에 눌 릴 때 체인 테이블 하단 으로 증가 하 는 지, 위로 증가 하 는 지 를 고려한다.아래로 늘 어 나 면 스 택 을 나 갈 때 실현 할 수 없습니다. 스 택 꼭대기 지침 이 꼬리 점 을 가리 키 기 때문에 단 방향 링크 는 이전 노드 에 접근 할 수 없습니다. 양 방향 링크 를 제외 하고.스 택 을 쌓 고 스 택 을 나 가 는 작업 을 편리 하 게 하기 위해 서 머리 결산 점 이 있 는 빈 스 택 을 만 듭 니 다.
/* ** 헤드 노드 가 있 는 빈 스 택 만 들 기 * / Stack Create_Stack() { Stack S = (Stack) malloc(sizeof(struct SNode)); S->next = NULL; return S; }
2. 재고 관리
스 택 작업 은 실제 적 으로 새로운 결산 점 을 스 택 꼭대기 아래 에 삽입 하 는 것 이다.
void Push(Stack S, int X) { Stack T = (Stack)malloc(sizeof(struct SNode)); T->Data = X; T->next = S->next; /* 창고 꼭대기 결산 점 S 에서 이동 하고 싶 습 니 다 * / S->next = T; }
3. 출고
창고 에서 나 오 는 작업 은 사실상 창고 꼭대기 아래 의 결산 점 을 삭제 하 는 것 이다.
/* ** 스 택 나 가기 * / int Pop (Stack S) { Stack t = S->next; int data ; if(ISEmpty(S)) /* 창고 가 비 었 습 니 다. 0 * / 로 돌아 갑 니 다. { printf ("창고 비 움"); return 0; } else{ S->next = t->next; data = t->Data; free(t); t = NULL; return data; } }
다음은 구체 적 인 실현 코드 를 드 립 니 다.
#include
#include
typedef struct SNode *Stack;
struct SNode{
int Data;
Stack next;
};
Stack Create_Stack();
int ISEmpty(Stack S);
void Push(Stack S, int X);
int Pop(Stack S);
int main()
{
Stack S;
int i;
S = Create_Stack();
for(i=1; i<=10; i++)
Push(S,i);
for(; !ISEmpty(S); )
printf("%d
",Pop(S));
}
/*
**
*/
Stack Create_Stack()
{
Stack S = (Stack) malloc(sizeof(struct SNode));
S->next = NULL;
return S;
}
/*
**
*/
int ISEmpty(Stack S)
{
return (S->next == NULL);
}
/*
**
*/
void Push(Stack S, int X)
{
Stack T = (Stack)malloc(sizeof(struct SNode));
T->Data = X;
T->next = S->next; /* S */
S->next = T;
}
/*
**
*/
int Pop(Stack S)
{
Stack t = S->next;
int data ;
if(ISEmpty(S)) /* , 0 */
{
printf("
");
return 0;
}
else{
S->next = t->next;
data = t->Data;
free(t);
t = NULL;
return data;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.