Есть 3 стеки - А, В, ССортировка двух стеков с использованием структур
Стеки А и В сортируются (номер на вершине стека является самым большим). Стек С Empty только 5 операции допускаются:
толчок, поп, сверху, IS_EMPTY, создать
Нам нужно написать функцию, которая принимает стеки A и B, перемещает все числа в стеки A и B в стек C и стек C должны быть отсортированы (наибольшее число находится сверху).
У меня есть алгоритм:
Compare top of A with top of B
Pop the least element and push to stack C
Repeat step 2 until any of the stack (A or B) becomes empty
Move remaining elements from non-empty stack to C. Now you have all the elements in C but in ascending order. (That is least element at top).
Move all the elements from C to A. (Contents in A are in descending order)
Move all the elements from A to B. (Contents in B are in ascending order)
Move all the elements from B to C.
и я начал писать код, но есть ошибки, и я не знаю, почему!
код:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define MAX_MEMBERS 10
typedef struct
{
int num;
}ITEM;
typedef struct
{
ITEM a[MAX_MEMBERS];
int top;
}STACK;
void create_stack(STACK *s)
{
s->top=-1;
}
int is_empty(STACK *s)
{
return s->top==-1;
}
int is_full(STACK *s)
{
return s->top==MAX_MEMBERS-1;
}
ITEM pop(STACK *s)
{
return s->a[s->top--];
}
void (STACK *s,ITEM *item)
{
s->a[++s->top]=*item;
}
ITEM top(STACK *s)
{
return s->a[s->top];
}
void sort (STACK *a,STACK *b,STACK *c)
{
while(!is_empty(&a)||!is_empty(&b))
if(top(&a)>top(&b))
push(&c,pop(&b));
if(!is_empty(&a))
{
while(!is_empty(&a))
push(&c,pop(&a));
}
else
{
while(!is_empty(&b))
push(&c,pop(&b));
}
while(!is_empty(&c))
push(&a,pop(&c));
while(!is_empty(&a))
push(&b,pop(&a));
while(!is_empty(&b))
push(&c,pop(&b));
}
void main(void)
{
STACK a,b,c;
create_stack(&a);
create_stack(&b);
create_stack(&c);
sort(&a,&b,&c);
}
Но где вы видите, что я назвал "сверху (& а)", если мы предположим, что "А" пусто ? –
Я ответил на ваш вопрос через редактирование – Machtl
Извините, можете ли вы изменить код, потому что я не получаю его. Может ли вставить код и скомпилировать код без каких-либо ошибок? –