Ayuda sobre una version iterativa y recursiva de este ejercicio

SoutherComfort
12 de Abril del 2005
Hola estaría tremendamente agradecido si alguien me ayudase en este ejercicio...
Basado en la definición de tipos de listas simplemente enlazadas con punteros de vista...
lista punteroanodo (lista l, item i);
Devolviendo un puntero al nodo cuyo item es i o null si el item no está en la lista.

Es que a mi no me sale ni queriendo

SoutherComfort
12 de Abril del 2005
Nadie me echs una mano?
por fa..

Noel Solw
12 de Abril del 2005
Te envio un programa que hace algo parecido a lo que tu pides.
Adecualo a tus necesidades.
Exito ! ! !

------------------------------------------------------------------------
// program d12_4.cpp - page 261.
// count how many times a given value occurs in a Linked List.
// 6/12/2003.
// written in borland c++ - ver 3.1

#include "d12_a.h"conio.h>
#include <stdlib.h>

#define N 50

int Count(Node *p,int value)
{
for(int counter = 0;p;p = p->next)
counter += p->data == value;
return counter;
} // COUNT

void main()
{
clrscr();
cout << "count how many times a given value occurs in a Linked List.n";
cout << "-----------------------------------------------------"
"-------------------------n";
List p;
randomize();
for(int i = 0;i < N;i++)
p.AddInEndOfList(random(10));
cout << "linked list :" << p << endl << endl;
for(int value = 0;value < 10;value++)
cout << setw(10) << value << " occurs in linked list "
<< Count(p.root,value) << " times" << endl;
cout << "-----------------------------------------------------"
<< "-------------------------n";
cout << "end of program - good bye ! ! ! n";
getch();
} // MAIN

-------------------------------------------------------------------

// program d12_a.h - page 261.
// header file for single linked list.
// 12/2003.
// written in borland c++ - ver 3.1

#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
#include <limits.h>
//------------------------------------------------------------------------------
struct Node
{
int data;
Node *next;
Node(int DATA = 0) : data(DATA),next(NULL) {}; // CONSTRUCTOR
friend ostream &operator<<(ostream &,const Node &);
friend istream &operator>>(istream &,Node &);
}; // NODE

ostream &operator<<(ostream &out,const Node &right)
{
out << right.data;
return out;
}; // NODE OPERATOR <<

istream &operator>>(istream &in,Node &right)
{
cout << setw(20) << "enter data : ";
in >> right.data;
return in;
} // NODE OPERATOR >>
//------------------------------------------------------------------------------
struct List
{
Node *root;
List() {root = NULL;}; // CONSTRUCTOR
~List();
void AddInEndOfList(int);
friend ostream &operator<<(ostream &,List &);
}; // LIST

List::~List()
{
for(Node *p = root;p;)
{
Node *holder = p;
p = p->next;
delete holder;
}
} // DESTRUCTOR

ostream &operator<<(ostream &out,List &right)
{
for(Node *p = right.root;p;p = p->next)
out << setw(4) << *p;
return out;
}; // LIST OPERATOR <<

void List::AddInEndOfList(int DATA = INT_MAX)
{
for(Node *p = root;p && p->next;p = p->next);
Node *temp = new Node(DATA);
if(!root)
root = temp; // insert head list
else
p->next = temp; // insert in middle list
if(DATA == INT_MAX)
cin >> *temp;
} // ADD IN END OF LIST
//------------------------------------------------------------------------------

SoutherComfort
12 de Abril del 2005
gracias, muchas muchas gracias