ЛДС C++

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Epic wave, 6 Oct 2009.

  1. Epic wave

    Epic wave Member

    Joined:
    15 Mar 2009
    Messages:
    105
    Likes Received:
    72
    Reputations:
    -1
    Привет. Вот вообщем на втором курсе столкнулся с линейно двунаправленным списком и т.к. я на первом курсе успешно прослушал про него сейчас возникли проблемы, если вам не сложно прошу помочь.
    На данном этапе не работает вывод, хотя и ввод я не уверен что написал верно, в финале программа должна :
    - Создавать Линейно Двунаправденный Список(Дальше ЛДС)
    - Вывод информации
    - Поиск по порядковому номеру
    - удалять элемент перед элементом списка с минимальным ключом
    - Сохранение в файле
    - Открытие из файла. Программа пишется под DOS


    Code:
    #include <iostream.h>
    #include <conio.h>
    #include <stdio.h>
    #include <iomanip.h>
    #include <string.h>
    #include <fstream.h>
    
    class lds{
          int n,b,r,key;
     lds * next;
     lds * prev;
    
    
     public:
    
    	static lds * p;
    
    		void insert();
    		void output();
    		void search();
    		void add();
    		void del();
    		void save();
    		void open();
    	  };
    
    
     lds*lds::p;
    
    
     void lds::insert(){
        lds * q;
    
    	
    	clrscr();
    
           p=new lds;
    
    	cout<<"How many alements? :";
    	cin>>n;
    
    	cout<<"Enter first element: ";
    	     cin>>p->b;
    	     q=p;
    
    
    	 for(int i=2;i<=n;i++){
                    
    
    		cout<<"\nEnter "<<i<<" element: ";
    		 cin>>p->b;
    		p->next = NULL;
    		p->prev = NULL;
    
    		
    	 }
                }
    
    
    void lds::output(){
    	int nk=0;
    	lds *q;
    	q=p;
    
    	
    	while(q!=NULL){
    		nk++;
    	
    
    		
    
    		cout<<nk<<"\n";
    
    		cout<<q->b;
    		q = q->next;
    
    		
    	}}
    
    
    
    
     void main(){
    	lds obj;
            clrscr();
            int option;
    
    
            do{
    	 cout<<"\nEnter action: ";
    	  cin>>option;
                   
    		switch(option){
    			case 1:
                     	  obj.insert();
    			break;
    
    			case 2:
    			  obj.output();
    			break;
    
    
    			
    			}
    			
    		}
    		while(option!=9);
    
    		} 
    

    И если не сложно пожалуйста комментируйте т.к. всё таки хотелось разобраться в этом.
     
    #1 Epic wave, 6 Oct 2009
    Last edited: 6 Oct 2009
    5 people like this.
  2. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    [offtop]
    раза с пятого прочел что написано ЛДС. А не ЛСД
    [/offtop]

    Вообще лучше всего начни с правильного оформления кода. Потому что код хоть и маленький понимается чуть сложновато из-за разброса слов.
     
    2 people like this.
  3. Nikituki

    Nikituki New Member

    Joined:
    14 Mar 2009
    Messages:
    19
    Likes Received:
    3
    Reputations:
    0
    В функции insert у тебя выделяется память только для головы списка, независимо от количества элементов....
    Вообще, по спискам куча инфы и простой запрос в гугле тебе наверняка поможет ;)

    Я тоже=)
     
    1 person likes this.