Lineare Liste, Elemente hinzufügen und entfernen

Danke für die Antworten!


Aufgabe:
Code:
void main()
{
	Stack fuechse;

	for( int i = 1 ; i <= 8 ; i++)
	{
		if(getZufallsBit())
			fuechse.push(new Fix());
		else
			fuechse.push(new Foxi());
	}while(fuechse.pop());

Alsooo, neuer Versuch:

}

Code:
#include <iostream>
#include <string>
#include "stlist.h"
#include <ctime> 

using namespace std;


class Stack
{
private:
	Stack* f;
public:
	Stack(){};
	
	
	/*void push(Stack* fu)       ********? Zugriff auf void push(T ding) aus stlist****
	{
		f=fu;

	}
	bool pop()
	{
		
		return true;
	}*/

	
};

class Fix:public Stack
{
public:
	Fix(){ /*cout << "Fix.Objekt" << endl;*/};
	
};

class Foxi:public Stack
{
public:
	Foxi(){/*cout<< "Foxi.Objekt"<< endl;*/};
	
};


stlist.h

Code:
#include <iostream>     
using namespace std;

template<typename T>
class STlist

{
	enum{anzahl = 10};
	T stapel[anzahl];
	int top;


public:

STlist()
	{
		top = 0;
	};

void push(T ding)

		{	
	
			stapel[top] = ding;
			top++;
				
		}


bool pop()
		{
			if( top == NULL)
			return false;

			else

			top--;
			cout << stapel[top];
		
			return true;
		}
	
};


Ich hatte ähnliche Aufgaben mit push und pop, aber hier habe ich das Problem, dass Stack keine Template-Klasse ist. Ich muss also auf push und pop "über" Stack zugreifen (fuechse.push), aber push() soll Template sein (hoffe ich).

Ich hatte in main statt
Stack fuechse
das hier geschrieben:
STlist<Stack*> fuechse;

dann sind push und pop Methoden von Stack, alles in Template und es hat funktioniert!

Aber wie greife ich hier über fuchs der nicht-templateKlasse Stack auf die template-Methode push()?
 
Hi.

Vergiss doch mal bitte im Zusammenhang mit Listen deine Arrays.

Ein Liste ist eine aus einfachen Grundelementen zusammengesetzte Datenstruktur:
C++:
struct list_node {
  void* data;
  list_node* next;
}
Diese list_node (Kettenglieder) können zu einer Liste zusammengefügt werden indem man sie aneinander hängt. Es gibt keine festgelegte Größe (im Gegensatz zu Arrays).

In dieser Aufgabe brauchst du auch keine Templates, verwende doch einfach Vererbung, so dass Fix und Foxi eine gemeinsame Oberklasse besitzen.

Gruß
 
Zurück