Doppelt verkettete Liste



  • Könnt ihr mir dabei helfen - ich blick echt nicht durch:

    Ich muss eine Klasse für eine doppelt verkettete Liste entwickeln bei der jedes Element 2 Zeiger besitzt wobei einer auf das vorige und der andere auf das nachfolgende Element zeigt.

    Dann muss ich routinen schreiben mit der ich das Erzeugen und Löschen der gesamten Liste sowie das Einfügen eines Elements mit Bestimmung der Listenläge ermöglichen kann.

    Ausserdem sollte noch das Suchen nach Positionsindex sowie nach Inhalt des Listenelements und auch das Löschen eines Elements möglich sein.

    Zuletzt noch das Sortieren der Listenelemente in aufsteigender Reihenfolge....

    Bin für jeden Input dankbar - komme von Delphi und hab echt keinen Tau von C++ Syntax.

    Mike



  • Als erstes solltest du http://www.c-plusplus.net/cms/modules.php?op=modload&name=Downloads&file=index&req=getit&lid=37
    durchlesen, um wenigstens einen kleinen Einblick in C++ zu haben.

    Was heißt "du musst"?
    ISt es eine Aufgabe zum Studium, oder zählt das Ergebnis?
    Darfst du die STL benutzen oder _musst_ du alles selber machen?



  • ich geb dir einen Denkanstoß, weitere Sachen findest du hier bei den FAQs und im inet natuerlich

    eine einfache klasse koennte so aussehen, musst aber noch einiges hinzufuegen

    template <class Type>
    	class list {
    		// 
    	public:
    		list()
    			: m_front( 0 ), m_end( 0 ), m_current( 0 ),
    			  m_size( 0 ) {}
    		list( const list& );
    		list& operator= ( const list& );
    		virtual ~list();
    
    		void insert( item<Type> *pItem, Type value );
    		//void insert_end( Type value );
    		//void insert_front( Type value);
    		//void insert_all( const list& ls );
    
    		int  remove( Type value );
    		//void remove_front();
    		//void remove_all();
    
    		item<Type> *find( Type value );
    
    		//void display( ostream &os = cout );
    
    		int size() { return m_size; }
    
    	protected:
    		template <class Type>
    		class item {
    			//
    		public:
    			item( Type value, item *a_item = 0 )
    
    			Type value()
    			item  next()
    
    			void next( item *link );
    			void value( Type new_value );
    
    			friend class list;  // oder geter/seter
    
    		private:
    			Type  m_value;
    			item *m_next;
                            item *m_prev;
    		};
    
    		void up_size()   { ++m_size; }
    		void down_size() { --m_size; }
    	private:
    		item<Type> *m_front;
    		item<Type> *m_end;
    		int m_size;
    	};
    };
    


  • Hallo,

    du kannst dir auch mal diesen Beitrag hier durchlesen:

    http://www.c-plusplus.net/forum/viewtopic.php?t=87459&highlight=liste

    mfg
    v R


Anmelden zum Antworten