데이터 구조의 창고 정의 및 기본 조작 실현
학습 에 따 르 면 스 택 은 일종 의 선형 데이터 구조 로 스 택 의 연산 은 표 의 한 부분 에서 만 진행 할 수 있 기 때문에 이런 데이터 구 조 는 '후진 선 출' 의 특징 을 가진다.
다음은 스 택 의 c 언어 구현 입 니 다.그 중에서 스 택 은 top 노드 와 bottom 노드 로 구성 되 는데 이 두 노드 는 각각 스 택 의 상단 과 아래쪽 을 가리킨다.그 중에서 창고 의 구성 결점 은 구조 체 로 이 루어 지고 구조 체 는 데이터베이스 와 다음 결점 을 가리 키 는 지침 역으로 구성 되 며 다음은 결점 의 c 언어 로 이 루어 진다.
1 /*
2
3 */
4 typedef struct Node{
5 int data;
6 struct Node * pNext;
7 }NODE,* PNODE;
스 택 을 실현 하 는 결산 점 이 있 으 면 그 다음은 스 택 을 어떻게 실현 해 야 합 니까?
1 /*
2 , ,
3 */
4 typedef struct Strack{
5 PNODE pTop;
6 PNODE pBottom;
7 }STRACK,* PSTRACK;
스 택 의 기본 작업: 스 택 초기 화, 스 택 압축, 스 택 옮 겨 다 니 기, 스 택 나 가기 등 작업
1 /*
2
3 top bottom , (
4 )。
5 */
6 void init_strack(PSTRACK pS){
7 pS->pTop=(PNODE)malloc(sizeof(NODE)); // , , pTop
8 if(pS->pTop==NULL){
9 printf(" ");
10 exit(-1);
11 }
12 else{
13 pS->pBottom=pS->pTop; // bottom top , ,
14 pS->pTop->pNext=NULL;
15 }
16
17 }
18
19 /*
20
21 “ 、 ” , , ,
22 , top , 。
23 */
24 int push(PSTRACK pS,int val){
25 PNODE pNew=(PNODE)malloc(sizeof(NODE)); //
26 if(pNew->pNext==NULL){
27 printf(" ");
28 exit(-1);
29 }
30 pNew->data= val;
31 pNew->pNext=pS->pTop; // , top , pS->pTop
32 pS->pTop=pNew; // top
33 return 0; //0 push
34 }
35
36 /*
37
38 , , p, ,
39 , p=ps->pBottom
40 */
41 void traverse(PSTRACK ps){
42 PNODE p=ps->pTop; //
43 while(p!=ps->pBottom){
44 printf("%d ", p->data);
45 p=p->pNext; //
46 }
47 printf("
");
48 return;
49 }
50
51
52 /*
53
54 , true
55 , false
56 */
57 bool isEmpty(PSTRACK ps){
58 if(ps->pTop==ps->pBottom){
59 return true;
60 }
61 else{
62 return false;
63 }
64 }
65
66 /*
67 : , ps->pTop ( ),
68 。
69 */
70 bool pop(PSTRACK ps,int *pVal){
71 if(isEmpty(ps)){ // , , false
72 return false;
73 }
74 else{
75 PNODE p=ps->pTop; // , ,
76 ps->pTop=p->pNext; // top
77 *pVal=p->data;
78 free(p); //
79 p=NULL;
80 return true;
81 }
82 }
상술 한 것 은 창고 에 대한 기본 적 인 조작 을 실 현 했 기 때문에 물론 구체 적 인 응용 은 구체 적 인 알고리즘 요 구 를 보아 야 한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.