求问各位这个代码的设计思路(能详细点就太好了QAQ),然后有没有什么可以改的地方,谢谢!

#include<stdio.h>
#include<malloc.h>
#include<string.h>
 
typedef struct{
       char data[100];
       int top;
       int bottom;
}stack;
 
stack *StackCreate(){
       stack *p=(stack*)malloc(sizeof(stack)); 
       if(p==NULL) 
       return 0;
       p->bottom=p->top=0; 
       return p;
}
 
void StackInput(stack *p,char str){
       p->data[p->top]=str; 
       p->top++; 

 
char StackOutput(stack *p){
       if(p->top!=p->bottom)

              char str;
              str=p->data[p->top-1]; 
              p->top--; 
              return str;
       }
       return '\0';

 
void StackPrint(stack *p)
{
              if(p->top==p->bottom) 
       {
       printf("None");
       }
              else
              {
                     while(p->top!=p->bottom){
                            printf("%c",p->data[p->bottom]);
                            p->bottom++;
                     } 
              }
}
 
int main(){
       int i; 
       stack *p; 
    char s1; 
       char a[100];
       int n=0;
       printf("输入一个字符串:");
       scanf("%s",&a);
       p=StackCreate();
       
       for(i=0;i<strlen(a);i++) 
       {
              if(p->top!=p->bottom) 
              {
              s1=StackOutput(p); 
              if(a[i]!=s1) 
              {
            StackInput(p,s1); 
              StackInput(p,a[i]);
              }
              }
              else 
              {
                     StackInput(p,a[i]); 
              }     
       }
       printf("消除后的字符:\n"); 
       StackPrint(p); 
}

这个就是队列的设计思路,你可以看一下我写的队列

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m