如何解决C top和pop中的数据结构
如何填写我的 if-else 声明,如果这是字母,则将其弹出,如果没有,请将该字母放在顶部。我用struct
来解决问题。
typedef struct StackStruct{
int* darr;
int size;
int inUse;
} Stack;
void push (Stack* s,int val){
if (s->inUse >= s->size){
s->size = s->size + 2;
int *temp = ((int*)malloc (sizeof(int)* s->size));
for(int i = 0; i < s->size; i++){
temp[i] = s->darr[i];
}
free(s->darr);
s->darr=temp;
}
s->darr[s->inUse] = val;
s->inUse = s->inUse + 1;
}
int isEmpty (Stack* s){
if ( s->inUse == 0)
return TRUE;
else
return FALSE;
}
int top (Stack* s){
return ( s->darr[s->inUse-1] );
}
void init (Stack* s){
s->size = 2;
s->darr = (int*) malloc ( sizeof (int) * s->size );
s->inUse = 0;
}
Stack pop (Stack s){
s.inUse -= 1;
return s;
}
在我的 if-else 语句中,我注释掉的内容在我的代码中不起作用
int main(int argc,char const *argv[]){
Stack st1;
init (&st1);
char input[300];
if('a' || 'b' || 'c' || 'd'){
//push to stack
//push(st1,20);
}
if( 'm' || 'n' || 'o' || 'p'){
//check the top of the stack
int a;
a = top(&st1);
printf("this is top %d",a);
}
return 0;
}
解决方法
假设您有一个输入语句,例如
printf( "Give me a letter: " );
scanf( "%s",input );
并且您使用input[0]
作为输入字母,那么您可以使用strchr
中声明的string.h
库函数并执行以下操作:
if ( strchr( "abcd",input[0] ) )
{
push( st1,input[0] );
}
else if ( strchr( "mnop",input[0] ) )
{
// get top
}
else
{
// input not in abcd or mnop,do something else
}
strchr
在字符串参数中搜索指定的字符;如果找到了字符,则返回字符串中字符的地址,否则返回NULL
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。