데이터 구조 - 줄 편집 프로그램
14193 단어 데이터 구조
프로그램 코드 는 다음 과 같 습 니 다:
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 #define STACK_INIT_SIZE 100
5 #define STACKINCREMENT 10
6 #define OVERFLOW -2
7 #define OK 1
8 #define ERROR 0
9
10 typedef char SElemType;
11
12 //
13 typedef struct {
14 SElemType *base;
15 SElemType *top;
16 int stacksize;
17 }SqStack;
18
19 int InitStack(SqStack *S);//
20 int Push(SqStack *S,SElemType e);//
21 int Pop(SqStack *S,SElemType *e);//
22 int DestoryStack(SqStack *S);//
23 void LineEdit(SqStack *S);//
24 int ClearStack(SqStack *S);//
25
26 //
27 int InitStack(SqStack *S) {
28 S->base = (SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));
29 if(!S->base) {
30 exit(OVERFLOW);
31 }
32 S->top = S->base;
33 S->stacksize = STACK_INIT_SIZE;
34
35 return OK;
36 }
37
38 //
39 int Push(SqStack *S,SElemType e) {
40 if((S->top-S->base)>=S->stacksize) {
41 S->base = (SElemType*)realloc(S->base,(S->stacksize+STACKINCREMENT)*sizeof(SElemType));
42 if(!S->base) {
43 exit(OVERFLOW);
44 }
45 S->top = S->base + S->stacksize;
46 S->stacksize += STACKINCREMENT;
47 }
48 *S->top++ = e;
49 //printf("%c
",e);
50 return OK;
51 }
52
53 //
54 int Pop(SqStack *S,SElemType *e) {
55 if(S->top == S->base) return ERROR;
56 *e = *--S->top;
57 return OK;
58 }
59
60
61 //
62 int ClearStack(SqStack *S) {
63 S->top = S->base;
64 return OK;
65 }
66
67 //
68 int DestoryStack(SqStack *S) {
69 S->top = S->base;
70 free(S->base);
71 S->top = NULL;
72 S->base = NULL;
73 return OK;
74 }
75
76 //
77 void LineEdit(SqStack *S) {
78 SElemType *p,ch,c;
79 InitStack(S);
80 ch = getchar();
81 while(ch != EOF) {
82 while(ch!=EOF&&ch!='
') {
83 switch(ch) {
84 case '#':Pop(S,&c);break;
85 case '@':ClearStack(S);break;
86 default:Push(S,ch);break;
87 }
88 ch = getchar();
89 }
90 p = S->base;
91 while(p!=S->top) {
92 printf("%c",*p);
93 ++p;
94 }
95 ClearStack(S);
96 if(ch!=EOF) ch = getchar();
97 }
98 }
99
100 int main()
101 {
102 SqStack sq;
103 int f;
104 LineEdit(&sq);//
105 DestoryStack(&sq);//
106 return 0;
107 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.