Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   ЛДС C++ (https://forum.antichat.xyz/showthread.php?t=146258)

Epic wave 06.10.2009 21:59

ЛДС C++
 
Привет. Вот вообщем на втором курсе столкнулся с линейно двунаправленным списком и т.к. я на первом курсе успешно прослушал про него сейчас возникли проблемы, если вам не сложно прошу помочь.
На данном этапе не работает вывод, хотя и ввод я не уверен что написал верно, в финале программа должна :
- Создавать Линейно Двунаправденный Список(Дальше ЛДС)
- Вывод информации
- Поиск по порядковому номеру
- удалять элемент перед элементом списка с минимальным ключом
- Сохранение в файле
- Открытие из файла. Программа пишется под DOS


Код:

#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);

                }


И если не сложно пожалуйста комментируйте т.к. всё таки хотелось разобраться в этом.

slesh 07.10.2009 09:50

[offtop]
раза с пятого прочел что написано ЛДС. А не ЛСД
[/offtop]

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

Nikituki 08.10.2009 20:21

В функции insert у тебя выделяется память только для головы списка, независимо от количества элементов....
Вообще, по спискам куча инфы и простой запрос в гугле тебе наверняка поможет ;)

Цитата:

Сообщение от slesh
[offtop]
раза с пятого прочел что написано ЛДС. А не ЛСД
[/offtop]

Я тоже=)


Время: 06:18