데이터 구조 재 미 있 는 문제 - 이 진/8 진 변환
11567 단어 데이터 구조
1: #include <stdio.h>
2: #include <math.h>
3: #include <stdlib.h>
4: #define STACK_INIT_SIZE 20
5: #define STACKINCREMENT 10
6:
7: typedef char ElemType;
8: typedef struct {
9: ElemType *base;
10: ElemType *top;
11: int stacksize;
12: } sqStack;
13:
14: void initStack(sqStack *s)
15: {
16: /* , s->base*/
17: s->base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType));
18:
19: if(!s->base) exit(0); /* */
20:
21: s->top = s->base; /* , */
22: s->stacksize = STACK_INIT_SIZE; /* STACK_INIT_SIZE */
23: }
24:
25: void Push(sqStack *s, ElemType e) {
26: if(s->top - s->base >= s->stacksize) {
27: /* , */
28: s->base = (ElemType *)realloc(s->base, (s->stacksize +
29: STACKINCREMENT) * sizeof(ElemType));
30:
31: if(!s->base) exit(0); /* */
32:
33: s->top = s->base + s->stacksize;
34: s->stacksize = s->stacksize + STACKINCREMENT; /* */
35: }
36:
37: *(s->top) = e; /* */
38: s->top++;
39: }
40:
41: void Pop(sqStack *s , ElemType *e) {
42: if(s->top == s->base) return;
43:
44: *e = *--(s->top);
45: }
46:
47: int StackLen(sqStack s) {
48: return (s.top - s.base) ;
49: }
50:
51: int main()
52: {
53: ElemType c;
54: sqStack s1;
55: sqStack s2;
56: int len, i, j, sum = 0;
57: initStack(&s1); /* s1, */
58:
59: printf("Please input a binary number and type '#' for end
");
60: /* 0/1 , # */
61: scanf("%c", &c);
62:
63: while(c != '#')
64: {
65: if(c == '0' || c == '1')
66: Push(&s1, c);
67:
68: scanf("%c", &c);
69: }
70:
71: initStack(&s2); /* s2, */
72: len = StackLen(s1); /* , */
73:
74: for(i = 0; i < len; i = i + 3) {
75: for(j = 0; j < 3; j++) {
76: Pop(&s1, &c); /* */
77: sum = sum + (c - 48) * pow(2, j); /* */
78:
79: if(s1.base == s1.top) break;
80: }
81:
82: Push(&s2, sum + 48) ; /* */
83: sum = 0;
84:
85: }
86:
87: printf("The Octal from is
") ;
88:
89: while(s2.base != s2.top ) { /* */
90: Pop(&s2, &c);
91: printf("%c", c);
92: }
93: }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.