C/C++の宿題を片付けます 57代目
■ このスレッドは過去ログ倉庫に格納されています
0549デフォルトの名無しさん
2006/01/15(日) 00:21:35#include<stdio.h>
#include<stdlib.h>
typedef struct stack_impl_tag {struct stack_impl_tag *prev; char data;} StackImpl;
typedef struct stack_tag {StackImpl* ptr;} Stack;
int StackPush(Stack *s, char x) {
StackImpl *temp;
if (s->ptr) {
if (!(temp = (StackImpl*)malloc(sizeof(StackImpl)))) return 0;
temp->prev = s->ptr; s->ptr = temp;
} else {
if (!(s->ptr = (StackImpl*)malloc(sizeof(StackImpl)))) return 0;
s->ptr->prev = NULL;
}
s->ptr->data = x;
return 1;
}
int StackPop(Stack *s, char *x) {
StackImpl *temp;
if (!s->ptr) return 0;
*x = s->ptr->data; temp = s->ptr->prev; free(s->ptr);
if (temp) s->ptr = temp; else s->ptr = NULL;
return 1;
}
void StackInit(Stack *s) {s->ptr = NULL;}
void StackFree(Stack *s) {char temp; while (StackPop(s, &temp)) {}}
int main(void) {
Stack s; int i; char c; StackInit(&s);
while ((i = getchar()) != EOF && i != '\n') StackPush(&s, (char)i);
while (StackPop(&s, &c)) putchar(c);
StackFree(&s); return 0;
}
■ このスレッドは過去ログ倉庫に格納されています