Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Стек организованый через список в C 
:(
    Опции темы
makasin773
  Дата 31.1.2012, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 31.1.2012

Репутация: нет
Всего: нет



написать функцию addEven для добавления элементов перед первым элементом с четным значением, содержащимся в стеке(по одному значению). Сделать это необходимо так что бы работало на Turbo С
Код стека:
Код

struct Node{
int d;
Node *p:
}:
Node * first(int d);
void push(Node **top. int d);
int pop(Node **top);
//........................................
int main(){
Node Пор = first(l);
for (int i = 2: i<6; i++)push(&top, i):
while (top)
printf ("%d ", pop(stop));
return 0;
}
.................................
//........................................
//Начальное формирование стека
Node * first(int d){
Node *pv = new Node;
pv->d = d;
pv->p = 0;
return pv;
 
// Занесение в стек
void push(Node **top, int d){
Node *pv = new Node;
pv->d = d;
pv->p = *top;
*top = pv;
}
//...........................
// Выборка из стека
int pop(Node **top){
int temp - (*top)->d;
Node *pv = *top:
*tор = (*top)->p;
delete pv;
return temp;

PM MAIL   Вверх
feodorv
Дата 31.1.2012, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Такое впечатление, что код выдран с какого-то скана. smile 

Написано
Код

void push(Node **top. int d);

вместо
Код

void push(Node **top, int d);


Написано
Код

Node Пор = first(l);

вместо
Код

Node tор = first(1);


Написано
Код

for (int i = 2: i<6; i++)push(&top, i):

вместо
Код

for (int i = 2; i<6; i++)push(&top, i);


Написано
Код

printf ("%d ", pop(stop));

вместо
Код

printf ("%d ", pop(&top));

Хотя pop(stop) тоже неплохо выглядит smile 

Код печати полностью разрушает стек, уж лучше написать функцию next(). И где-то затерялось определение переменной top.

Цитата(makasin773 @  31.1.2012,  19:26 Найти цитируемый пост)
добавления элементов перед первым элементом с четным значением

Перед первым элементом с какого конца стека?


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
makasin773
Дата 31.1.2012, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 31.1.2012

Репутация: нет
Всего: нет



Цитата(feodorv @ 31.1.2012,  22:05)
С начала стека!


Перед первым элементом с какого конца стека?
PM MAIL   Вверх
feodorv
Дата 1.2.2012, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Ну, у меня получилось что-то такое:
Код

#include <stdio.h>

struct Node
{
  int d;
  Node *p;
};

void push( Node **top, int d)
{
  Node *pv = new Node;
  pv->d = d;
  pv->p = *top;
  *top = pv;
}

int pop( Node **top )
{
  if( *top == NULL ) return 0;
  int d = (*top)->d;
  Node *pv = *top;
  *top = (*top)->p;
  delete pv;
  return d;
}

void addEven( Node **top, int d)
{
  Node *cur, *firstEven = NULL;

  for( cur = *top; cur != NULL; cur = cur->p)
    if( (cur->d % 2) == 0 ) firstEven = cur;

  push( (firstEven == NULL) ? top : &firstEven->p, d);
}

void print( Node *top )
{
  for( Node *cur = top; cur != NULL; cur = cur->p) printf( "%d ", cur->d);
  printf( "\n" );
}

int main()
{
  Node *top = NULL;
  for( int i = 2; i < 6; i++) push( &top, i);

  printf( "Starting with: " );
  print( top );

  addEven( &top, 100);
  addEven( &top, 102);
  addEven( &top, 103);
  addEven( &top, 104);
  addEven( &top, 105);

  printf( "Ending with: " );
  print( top );

  return 0;
}

Код неудовлетворителен по всем показателям, но для начинающего сойдёт))))
Убрал ненужную и мешающую first...


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0484 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.