Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Добавление элемента в "хвост" в линейном однонаправленном списке / 12 сообщений из 12, страница 1 из 1
23.05.2005, 10:04
    #33079391
Marusia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление элемента в "хвост" в линейном однонаправленном списке
НЕ получается добавить элементы в "хвост" списка и в "голову" выдает ошибки
Буду очень признательна за помощь!!!!!!!!!
# include <iostream.h>
# include <conio.h>
# include <iomanip.h>
# include <stdio.h>
# include <string.h>
# include <stdlib.h>
# include <fstream.h>

class TElem
{
friend class TList;
char a;
TElem *next;
public:
TElem();
};
TElem::TElem()
{next=NULL;}


class TList
{
TElem *first,*cur;//cur-tekyschii element
int count;//kolichestvo elementov v spiske
public:
TList();//konstruktor
void sozd();//sozdanie spiska simvolov,zakanchivauschixsia tochkoi
void prn();//raspechativanie spiska
void addel_golova(char c);//dobavlenie elementa v golovy
void addel_xvost();//dobavlenie elementa v xvost
void clearlist(); //ynichtozenie spiska
};

TList::TList()
{first=cur=NULL;
count=0;}
//-----------------------------------------------
void TList::sozd()
{
TElem*t;
char b;
t=first;(*t).next=NULL;
cout<<"vvedite posledovatelnost simvolov:okonchanie -tochka";
cin>>b;
while (b!='.')
{
(*t).next=new (TElem);
t=(*t).next;
(*t).a=b;(*t).next=NULL;
cin>>b;
}
}
//-------------------------------------------------------------
void TList::prn()
{
TElem*t;
t=first;t=(*t).next;
cout<<"spisok: ";
while (t!=NULL)
{
cout<<(*t).a<<" ";
t=(*t).next;
}
}
//----------------------------------------------------------------
void TList::addel_golova(char c)
{
TElem*temp=new TElem;//sozdanie novogo elementa
count++;
temp->next=first;//prisoedinenie k spisky
temp->a=c;//modifikaciia spiska
first=temp;
}
//------------------------------------------------------------------
void TList::addel_xvost()//А ВОТ ЗДЕСЬ САМ ПО СЕБЕ ПО_МОЕМУ НЕПРАВИЛЬНЫЙ
{
if (cur->next==NULL)
{
TElem*temp;//sozdanie novogo elementa
temp=cur->next;
TElem*d=new TElem;
count++;
cout<<"vvedite simvol";cin>>d->a;
temp->next=cur;//prisoedinenie k spisky
temp->a=d;
cur=temp;//modifikaciia spiska
}
}
//----------------------------------------------------------------
void TList::clearlist()
{
TElem *q,*q1;//rabochie ykazateli
q=first;
q1=(*q).next;//ykazatel q1 operezaet ykazatel q
while (q1!= NULL)
{q=q1;q1=(*q1).next;delete q;}
}
//-------------------------------------------------------------------

void main()
{
TList A;
char e;
int k;//Kontrol vibora pynkta menu
do
{
cout <<"vvedite pynkt menu: "
<<"1-sozdanie spiska simvolov,zakanchivauschixsia tochkoi"<<endl
<<"2-raspechativanie spiska"<<endl
<<"3-dobavlenie elementa v golovy"<<endl
<<"4-dobavlenie elementa v xvost"<<endl
<<"5-ynichtozenie spiska"<<endl;
cin>>k;
switch (k)
{
case 1:A.sozd();break;
case 2:A.prn();break;
case 3:A.addel_golova(e);break;//что -то я неправильно указываю в скобках-не понимаю какая переменная там должна бытьcase 4:A.addel_xvost();break;
case 5:A.clearlist();break;
}
}
while (k);
}
...
Рейтинг: 0 / 0
23.05.2005, 10:30
    #33079430
XM
XM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление элемента в "хвост" в линейном однонаправленном списке
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
void TList::addel_golova()
{
        TElem*temp=new TElem();//sozdanie novogo elementa
        cout << "vvedite el-t" ;cin >> a;
        count++;
        temp->next=first;//prisoedinenie k spisky
        temp->a=c;//modifikaciia spiska
        first=temp;
}
//------------------------------------------------------------------
void TList::addel_xvost(){
        TElem * c=first, *p=c;
        char a;
        cout << "vvedite el-t" ;cin >> a;
        while(NULL!=c){
          p=c;
          c=c->next;
        }
        count++;
        if(NULL==p){
          first=new TElem();
          first->a=a;
        }else{
          c=new TElem();
          c->a=a;
          p->next=c;
        }
}

...
Рейтинг: 0 / 0
23.05.2005, 10:42
    #33079453
Marusia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление элемента в "хвост" в линейном однонаправленном списке
Теперь у меня вот так -только не знаю -как в case 3:A.addel_golova(); должно быть?

# include <iostream.h>
# include <conio.h>
# include <iomanip.h>
# include <stdio.h>
# include <string.h>
# include <stdlib.h>
# include <fstream.h>

class TElem
{
friend class TList;
char a;
TElem *next;
public:
TElem();
};
TElem::TElem()
{next=NULL;}


class TList
{
TElem *first,*cur;//cur-tekyschii element
int count;//kolichestvo elementov v spiske
public:
TList();//konstruktor
void sozd();//sozdanie spiska simvolov,zakanchivauschixsia tochkoi
void prn();//raspechativanie spiska
void addel_golova(char c);//dobavlenie elementa v golovy
void addel_xvost();//dobavlenie elementa v xvost
void clearlist(); //ynichtozenie spiska
};

TList::TList()
{first=cur=NULL;
count=0;}
//-----------------------------------------------
void TList::sozd()
{
TElem*t;
char b;
t=first;(*t).next=NULL;
cout<<"vvedite posledovatelnost simvolov:okonchanie -tochka";
cin>>b;
while (b!='.')
{
(*t).next=new (TElem);
t=(*t).next;
(*t).a=b;(*t).next=NULL;
cin>>b;
}
}
//-------------------------------------------------------------
void TList::prn()
{
TElem*t;
t=first;t=(*t).next;
cout<<"spisok: ";
while (t!=NULL)
{
cout<<(*t).a<<" ";
t=(*t).next;
}
}
//----------------------------------------------------------------
void TList::addel_golova(char c)
{
TElem*temp=new TElem();//sozdanie novogo elementa
char a;
cout << "vvedite el-t" ;cin >> a;
count++;
temp->next=first;//prisoedinenie k spisky
temp->a=c;//modifikaciia spiska
first=temp;
}
//------------------------------------------------------------------
void TList::addel_xvost()
{
TElem * c=first, *p=c;
char a;
cout << "vvedite el-t" ;cin >> a;
while(NULL!=c){
p=c;
c=c->next;
}
count++;
if(NULL==p){
first=new TElem();
first->a=a;
}else{
c=new TElem();
c->a=a;
p->next=c;
}
}
//----------------------------------------------------------------
void TList::clearlist()
{
TElem *q,*q1;//rabochie ykazateli
q=first;
q1=(*q).next;//ykazatel q1 operezaet ykazatel q
while (q1!= NULL)
{q=q1;q1=(*q1).next;delete q;}
}
//-------------------------------------------------------------------

void main()
{
TList A;
int k;//Kontrol vibora pynkta menu
do
{
cout <<"vvedite pynkt menu: "
<<"1-sozdanie spiska simvolov,zakanchivauschixsia tochkoi"<<endl
<<"2-raspechativanie spiska"<<endl
<<"3-dobavlenie elementa v golovy"<<endl
<<"4-dobavlenie elementa v xvost"<<endl
<<"5-ynichtozenie spiska"<<endl;
cin>>k;
switch (k)
{
case 1:A.sozd();break;
case 2:A.prn();break;
case 3:A.addel_golova();break;//Тут она мне говорит что слишком много параметров Charcase 4:A.addel_xvost();break;
case 5:A.clearlist();break;
}
}
while (k);
}
...
Рейтинг: 0 / 0
23.05.2005, 12:40
    #33079818
Marusia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление элемента в "хвост" в линейном однонаправленном списке
Теперь не получается в голову добавить-она работает-но выдает иероглиф вместо буквы???
class TElem
{
friend class TList;
char a;
TElem *next;
public:
TElem();
};
TElem::TElem()
{next=NULL;}
//----------------------------------------------------------------------
void TList::addel_golova()
{
TElem*temp=new TElem();//sozdanie novogo elementa
char c;
cout << "vvedite el-t" ;cin >> c;
count++;
temp->next=first;//prisoedinenie k spisky
temp->a=c;//modifikaciia spiska
first=temp;
}
...
Рейтинг: 0 / 0
23.05.2005, 13:35
    #33079986
Marusia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление элемента в "хвост" в линейном однонаправленном списке
Разве никто не знает в чем ошибка в "голове"????Помогите -а то сег сдавать
...
Рейтинг: 0 / 0
23.05.2005, 13:59
    #33080049
XM
XM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление элемента в "хвост" в линейном однонаправленном списке
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
void TList::prn()
{
TElem*t;
t=first; // !!! здесь не надо t=(*t).next;
cout<<"spisok: ";
while (t!=NULL)
{
cout<<(*t).a<<" ";
t=(*t).next;
}

MarusiaРазве никто не знает в чем ошибка в "голове"????
...
Рейтинг: 0 / 0
23.05.2005, 14:10
    #33080096
Marusia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление элемента в "хвост" в линейном однонаправленном списке
да-да! немножко стыдно-но этот иероглиф все равно передвигается по списку-где-то еще засада
...
Рейтинг: 0 / 0
23.05.2005, 14:26
    #33080163
Marusia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление элемента в "хвост" в линейном однонаправленном списке
# include <iostream.h>
# include <conio.h>
# include <iomanip.h>
# include <stdio.h>
# include <string.h>
# include <stdlib.h>
# include <fstream.h>

class TElem
{
friend class TList;
char a;
TElem *next;
public:
TElem();
};
TElem::TElem()
{next=NULL;}


class TList
{
TElem *first,*cur;//cur-tekyschii element
int count;//kolichestvo elementov v spiske
public:
TList();//konstruktor
~TList();
void sozd();//sozdanie spiska simvolov,zakanchivauschixsia tochkoi
void prn();//raspechativanie spiska
void addel_golova();//dobavlenie elementa v golovy
void addel_xvost();//dobavlenie elementa v xvost
void clearlist(); //ynichtozenie spiska
};

TList::TList()
{first=new (TElem);cur=NULL;
count=0;}

TList::~TList()
{delete first,cur;}
//-----------------------------------------------
void TList::sozd()
{
TElem*t;
char b;
t=first;
cout<<"vvedite posledovatelnost simvolov:okonchanie -tochka ";
cin>>b;
while (b!='.')
{
(*t).next=new (TElem);
t=(*t).next;
(*t).a=b;(*t).next=NULL;
cin>>b;
}
}
//-------------------------------------------------------------
void TList::prn()
{
TElem*t;
t=first;
cout<<"spisok: ";
while (t!=NULL)
{
cout<<(*t).a<<" ";
t=(*t).next;
}
}
//----------------------------------------------------------------
void TList::addel_golova()
{
TElem*temp=new TElem();//sozdanie novogo elementa
char b;
cout << "vvedite el-t" ;cin >> b;
count++;
temp->next=first;//prisoedinenie k spisky
temp->a=b;//modifikaciia spiska
first=temp;
}
//------------------------------------------------------------------
void TList::addel_xvost()
{
TElem * c=first, *p=c;
char a;
cout << "vvedite el-t" ;cin >> a;
while(NULL!=c){
p=c;
c=c->next;
}
count++;
if(NULL==p){
first=new TElem();
first->a=a;
}else{
c=new TElem();
c->a=a;
p->next=c;
}
}
//----------------------------------------------------------------
void TList::clearlist()
{
TElem *q,*q1;//rabochie ykazateli
q=first;
q1=(*q).next;//ykazatel q1 operezaet ykazatel q
while (q1!= NULL)
{q=q1;q1=(*q1).next;delete q;}
}
//-------------------------------------------------------------------

void main()
{
TList A;
int k;//Kontrol vibora pynkta menu
do
{
cout <<"vvedite pynkt menu: "
<<"1-sozdanie spiska simvolov,zakanchivauschixsia tochkoi"<<endl
<<"2-raspechativanie spiska"<<endl
<<"3-dobavlenie elementa v golovy"<<endl
<<"4-dobavlenie elementa v xvost"<<endl
<<"5-ynichtozenie spiska"<<endl;
cin>>k;
switch (k)
{
case 1:A.sozd();break;
case 2:A.prn();break;
case 3:A.addel_golova();break;
case 4:A.addel_xvost();break;
case 5:A.clearlist();break;
}
}
while (k);
}
...
Рейтинг: 0 / 0
23.05.2005, 14:27
    #33080165
XM
XM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление элемента в "хвост" в линейном однонаправленном списке
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
void TList::sozd()
{
  TElem *t, *p;
  char b;
  t=first;
  cout<<"vvedite posledovatelnost simvolov:okonchanie -tochka";
  cin>>b;
  while (b!='.')
  {
   p=new TElem();
   p->a=b;
   if(NULL==t)  first=p;
    else t->next=p;
   t=p;
   cin>>b;
  }
}

...
Рейтинг: 0 / 0
23.05.2005, 14:33
    #33080187
Marusia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление элемента в "хвост" в линейном однонаправленном списке
К сожалению результат тот же самый-перед первым элементом печатается буква Ё!!!!!!!!!
...
Рейтинг: 0 / 0
23.05.2005, 14:37
    #33080196
XM
XM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление элемента в "хвост" в линейном однонаправленном списке
См. файл во вложении
...
Рейтинг: 0 / 0
23.05.2005, 14:42
    #33080221
Marusia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление элемента в "хвост" в линейном однонаправленном списке
СПАСИБО!!!!!!Буду разбираться
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Добавление элемента в "хвост" в линейном однонаправленном списке / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]