0 / 0 / 0
Регистрация: 08.07.2015
Сообщений: 4
1

Создать два новых стека, с четными и нечетными элементами первоначального стека

09.07.2015, 14:46. Показов 2260. Ответов 1
Метки нет (Все метки)

Дано указатель P1 на вершину непустого стека. Создать два новых стека , переместив в первый из них все элементы исходного стека с четными значениями, а во второй - с нечетными (элементы в новых стеках будут располагаться в порядке, обратном выходного , один из этих стеков может оказаться пустым ) . Вывести адреса вершин полученных стеков ( для пустого стека вывести NULL) .
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.07.2015, 14:46
Ответы с готовыми решениями:

Создать два новых стека, переместив в первый из них все элементы исходного стека с четными значениями
Дан указатель P1 на вершину непустого стека. Создать два новых стека, переместив в первый из них...

Задан указатель P1 на вершину непустого стека. Создать два новых стека
Добрый вечер, у меня возникла проблемка с такой программкой. Вывести в компонент Label. ...

Из одного стека, хранящего символы, создать два новых стека
Из одного стека, хранящего символы, создать два новых стека: один с латинскими буквами, удвоив...

Из одного стека, хранящего символы, создать два новых стека
Из одного стека, хранящего символы, создать два новых стека: один с латинскими буквами, удвоив...

1
836 / 639 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
10.07.2015, 16:10 2
Лучший ответ Сообщение было отмечено Vuty как решение

Решение

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <stdio.h>
#include <malloc.h>
 
struct node {
    int val;
    struct node* next;
};
 
int  stack_push(struct node** st, int val);
void stack_pop(struct node** st);
 
//разделение стека на два стека
void stack_split(struct node** s1,
                 struct node** s2,
                 struct node** st){
    struct node* p = *st;
 
    for(*s1 = *s2 = NULL; p != NULL; ){
        if(p->val % 2){
            *s1 = p;
             p  = p->next;
             s1 = &(*s1)->next;
        } else {
            *s2 = p;
             p  = p->next;
             s2 = &(*s2)->next;
        }   
    }
    *s1 = *s2 = *st = NULL;
}
 
 
int main(void){
    int i;
    struct node* s1, *s2, *st = NULL;
 
    for(i = 0; i < 30; ++i)
        stack_push(&st, i);
 
    stack_split(&s1, &s2, &st);
 
    //адреса
    printf("addr ptr - s1: 0x%08X\n", s1);
    printf("addr ptr - s2: 0x%08X\n\n", s2);
 
    //вывести не чётные числа
    while(s1 != NULL){
        printf("%d ", s1->val);
        s1 = s1->next;
    }
    putchar('\n');
 
    //вывести чётные числа
    while(s2 != NULL){
        printf("%d ", s2->val);
        s2 = s2->next;
    }
    putchar('\n');
    return 0;
}
 
//втолкнуть
int stack_push(struct node** st, int val){
    struct node* p = (struct node*)malloc(sizeof(struct node));
    if(p != NULL){
        p->val  = val;
        p->next = *st;
        *st     = p;
    }
    return (p != NULL);
}
 
//вытолкнуть
void stack_pop(struct node** st){
    struct node* t = *st;
    if(t != NULL){
        *st = (*st)->next;
        free(t);
    }
}
Результат работы кода
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.07.2015, 16:10
Помогаю со студенческими работами здесь

Создать два новых стека, переместив в первый из них
Дан указатель P1 на вершину непустого стека. Создать два новых стека, переместив в первый из них...

Создать два новых файла, в первом - элементы исходного файла с нечетными номерами, во втором - с четными
задания по Pascal. 1. Дан текст. Между соседними словами – не менее одного пробела, за...

Заполнение стека четными/нечетными случайными числами в зависимости от четности первого элемента
Заполнить,с использованием возможностей датчика случайных чисел стек целыми числами из дипазона ...

Создать два новых файла, первый из которых содержит элементы исходного файла с четными номерами, а второй — с нечетными.
Дан файл вещественных чисел с именем Name1. Создать два новых файла с именами Name2 и Name3, первый...

Разбить исходный массив на два: с чётными и нечётными элементами
Задание: 1.Описать процедуру Split2(A, NA, B, NB, C, NC), формирующую по целочисленному массиву A...

Сформировать два новых массива: . В первый массив поместить элементы с четными индексами, а во второй с нечетными
Задан числовой массив размером 10. Сформировать 2 массива размером 5. В первый массив поместить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru