Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C]Стек организованый через список


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

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;

Автор: t_gran 1.2.2012, 07:17
makasin773, откуда вы этот код отрыли? Ворох синтаксических ошибок. И ещё одно, это не С, а уже С++.
Код

#include <stdio.h>

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

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

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

int main()
{
   Node* top = first(1);

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

   addEven(&top, 100);
   
   while (top)
   {
      printf("%d ", pop(&top));
   }

   return 0;
}

Node* first(int d)
{
   Node* pv = new Node;
   pv->d = d;
   pv->p = NULL;
   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;
   *top = (*top)->p;
   delete pv;
   return temp;
}

int isEven(int a)
{
   return (a%2 == 0);
}

void addEven(Node** top, int d)
{
   Node* pv = *top;

   if (pv)
   {
      if (isEven(pv->d))
      {
         push(top, d);
      }
      else
      {
         while (pv->p && !isEven(pv->p->d))
         {
            pv = pv->p;
         }
         push(&(pv->p), d);
      }
   }
}



Автор: feodorv 4.2.2012, 00:15
Вот http://forum.vingrad.ru/forum/topic-346272.html я старался, старался, но всё прахом)))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)