#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define Status int
#define INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct{
char number;
}ElemType;
typedef struct{
ElemType *top;
ElemType *base;
int StackSize;
}SqStack;
Status InitStack(SqStack &S){
if(!S.base){
S.base = (ElemType *)malloc(sizeof(ElemType) * INIT_SIZE);
if(!S.base) return 0;
S.top = S.base;
S.StackSize = INIT_SIZE;
return 1;
}
return 0;
}
Status PushStack(SqStack &S, ElemType e){
if(!S.base) return 0;
if(S.top >= S.base + S.StackSize){
S.base = (ElemType *)realloc(S.base, sizeof(ElemType) * (INIT_SIZE + STACKINCREMENT));
S.top = S.base + S.StackSize;
S.StackSize = S.StackSize + STACKINCREMENT;
}
*S.top++ = e;
return 1;
}
Status PopStack(SqStack &S, ElemType &e){
if(!S.base|| S.base == S.top) return 0;
e = *--S.top;
return 1;
}
void main(){
char N[1000];
char c;
int count = 0;
SqStack S;
S.base = NULL;
InitStack(S);
ElemType e, a;
gets(N);
int length = strlen(N);
for(int i=0;i<length;i++){
c = N[i];
if(c != '{' && c != '}' && c != ',' && c != '\0'){
e.number = c;
PushStack(S, e);
count++;
}
}
printf("{");
for(int j=0;j<count;j++){
PopStack(S,a);
if(j==count-1)
printf("%c",a.number);
else
printf("%c,",a.number);
}
printf("}\n");
}
【数据结构-C语言实现】反转链表
最新推荐文章于 2022-10-23 00:49:37 发布