gpt4 book ai didi

c - 防止数组接受重复值

转载 作者:太空宇宙 更新时间:2023-11-04 08:15:31 25 4
gpt4 key购买 nike

我有一个堆栈,我想在其中推送不同的元素。我写了下面的代码。但它总是只检查第一个元素。如果我在第一个值中输入重复值,它不会接受,但如果我输入第二个或第三个值的重复值,它会接受。例如,如果我输入 20 并再次输入 20,它将不会接受第二个,但如果我输入 20、22、22,它会接受重复项。我怎样才能避免这种情况?

#include <stdio.h>
#define MAXSIZE 5

struct stack
{
int stk[MAXSIZE];
int top;
};
typedef struct stack STACK;
STACK s;

void push(void);
int pop(void);
void display(void);

void main ()
{
int choice;
int option = 1;
s.top = -1;

printf ("STACK OPERATION\n");
while (option)
{
printf ("------------------------------------------\n");
printf (" 1 --> Bus Status \n");
printf (" 2 --> Enter Bus \n");
printf (" 3 --> Exit Bus \n");
printf (" 4 --> EXIT \n");
printf ("------------------------------------------\n");

printf ("Enter your choice\n");
scanf ("%d", &choice);
switch (choice)
{
case 1:
display();
break;
case 2:
push();
break;
case 3:
pop();
break;
case 4:
return;
}
fflush (stdin);
printf ("Do you want to continue(Type 0 or 1)?\n");
scanf ("%d", &option);
}
}

/* Function to add an element to the stack */
void push ()
{
int num,i,j,status=0;
if (s.top == (MAXSIZE - 1))
{
printf ("Terminal is Full\n");
return;
}
else
{

printf ("Enter the Bus Number\n");
scanf ("%d", &num);
if(num<1 || num>30) {
printf("This bus Does not Exist.\n");
}
for(i=0;i<5;i++){
if(s.stk[i]==num){
printf("Bus Already in the Terminal\n");
break;
}
else {
s.top = s.top + 1;
s.stk[s.top] = num;
status=1;
break;
}
}
if(status==1)
printf("Bus %d Successfully Entered\n", num);

}
return;
}

最佳答案

你的总线插入循环正在循环并在第一次找到 s.stk[i] != num 时添加总线。您需要检查公交车是否在站内,即在插入新公交车之前搜索整个堆栈。

for(i=0;i<5;i++) {
if(s.stk[i]==num){
printf("Bus Already in the Terminal\n");
break;
}
else {
s.top = s.top + 1;
s.stk[s.top] = num;
status=1;
break;
}
}

关于c - 防止数组接受重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36018011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com