Форум программистов, компьютерный форум CyberForum.ru

Двунаправленный динамический список - C++

Восстановить пароль Регистрация
 
Отс1993
2 / 2 / 1
Регистрация: 23.04.2012
Сообщений: 15
02.06.2012, 13:51     Двунаправленный динамический список #1
задача :вводится предложение,оканчивающееся точкой. Требуется удалить второе вхождение элемента, который вводится с клавиатуры:
C++
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <cstdlib>
#include <iostream>
 
using namespace std;
struct node;
typedef node *ref;
struct node{ref right; 
ref left;
 char dat;};
bool seeklist(ref list,char a,ref &p,int &k);
 
void outn(ref &p,ref list);
int main(int argc, char *argv[])
{
    ref list=NULL, p=NULL;
 list=new node;
 (*list).right=NULL;
 (*list).left=NULL;
 p=list;
 cout<<"введите последовательность, заканчивающуюся точкой: \n";
 do{
 (*p).right=new node;
 p->right->left=p;
 p=p->right;
 cin>>p->dat;
 }while(p->dat!='.');
 p->right=NULL;
 Out(p,list);
 cout<<"\n";
 cout<<"\nВведите элемент,2-е вхождение которого будет удалено: ";char s;int i;
    cin>>s; p=list->right;
    if (seeklist (list,s,p,i)) 
          {
                 int k=1;
                 p=p->right;
                 do
                {
                if (p->dat==s)
                {
                 k++;
                 if (k==2)
                 dellistc (p);
                }
                p=p->right;
          }
          
          while (p->right!=NULL);
          }
      outn(p,list);    
    system("PAUSE");
    return EXIT_SUCCESS;
}bool seeklist(ref list,char a,ref &p,int &k)
{
     bool sig=false;
     k=1;
     p=list->right;
     while ((p->right!=NULL)&&(!sig))
     {
           if (p->dat==a)
           sig=true;
           else {
                p=p->right;
                k++;
                };
     }
     return sig;
}
void outn(ref &p,ref list)
{
   p=list;
    while(p->right!=NULL){
 cout<<p->right->dat;
p=p->right;
}
cout<<"\n";
}void dellistc(ref &p)
{
    p->left->right=p->right;
     p->right->left=p->left;
     delete p;
}
И почему то после ввода все виснет(((помогите косяк найти

Добавлено через 22 минуты
ладно....уже переделал....изврат но потянет
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2012, 13:51     Двунаправленный динамический список
Посмотрите здесь:

C++ Двунаправленный список
Двунаправленный список C++
динамический двунаправленный список. C++
C++ Двунаправленный динамический список
Создать связный динамический список двунаправленный и в нем обеспечить подсчет элементов C++
Динамический двунаправленный список C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 05:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru