Соединить два стека в один - C (СИ)
Формулировка задачи:
Есть два стека, необходимо соединить эти стеки в один. Вот сделал, но выводиться в стеки3 только первый стек.
#include "stdio.h" #include <conio.h> #include <locale.h> #include <stdlib.h> #include <string.h> int pop (int steck[]); void push (int *steck,int x); int two_steck(int steck1[], int steck2[], int steck3[]); int steck1[100], top=-1; int steck2[100]; int steck3[200]; int pop (int steck[]) { int r=0; r=steck[top]; top--; return r; } void push (int *steck,int x) { top++; steck[top]=x; } int two_steck(int steck1[], int steck2[], int steck3[]){ top++; memcpy(steck3, steck2, 100); // Копирует из второго стека в третий в первые 100 эл. memmove(steck3+100, steck3, 100); // перемещает данные второго стека в конец memcpy(steck3, steck1, 100); // копирует в начало третьего первый return steck3[top]; } int main () { int i, j, x, x2, y, y2, N; printf("Количество елементов в стеки:"); scanf ("%d", &N); printf("\nЕлементы первого стека:"); for(i=0; i<N ;i++){ scanf ("%d",&x); push (steck1,x); } printf("Первый стек:"); for(j=0; j<N ;j++){ y=pop (steck1); printf("%d ", y); } printf("\n\nЕлементы второго стека:\n"); for(i=0; i<N ;i++){ scanf ("%d",&x2); push (steck2,x2); } printf("Второй стек:"); for(j=0; j<N ;j++){ y2=pop (steck2); printf("%d ", y2); } printf("Новый стек:"); for(i=0; i<N;i++){ two_steck(steck1,steck2,steck3); printf("%d\t", steck3[i]); } return 0; }
Пробывал через указатель, но всеравно не работает.
void two_steck(int*steck1,int size1,int *steck2,int size2) { int*r=steck3; for(int i=0;i<size1;i++,r++,steck1++) *r=*steck1; for(int i=0;i<size2;i++,r++,steck2++) *r=*steck2; }
Решение задачи: «Соединить два стека в один»
textual
Листинг программы
void two_steck(int*steck1,int size1,int *steck2,int size2) { int*r=steck3; for(int i=0;i<size1;i++,r++,steck1++) *r=*steck1; for(int i=0;i<size2;i++,r++,steck2++) *r=*steck2; }
Объяснение кода листинга программы
В данном коде реализуется функция two_steck, которая объединяет два стека в один.
- В первую очередь, мы объявляем переменную r, которая будет обозначать вершину нового стека (steck3).
- Затем, в первом цикле for, мы копируем элементы из первого стека (steck1) в новый стек (r).
- Во втором цикле for, мы копируем элементы из второго стека (steck2) в новый стек (r).
- В конце функции, r содержит последний элемент нового стека.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д