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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Lostmen
0 / 0 / 0
Регистрация: 15.03.2011
Сообщений: 13
#1

Двусвязный список - C++

08.04.2011, 14:21. Просмотров 372. Ответов 0
Метки нет (Все метки)

Люди помогите пожалуйста исправить код а то при вводе списка из 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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#include <iostream>
using namespace std;
 struct stack
  {
    int info;
    stack *rlink, *llink;
  };
 
int F(stack *k, int t)
{
    if(k->info == t)
        return 1;
}
/*Функция вывода слева напpаво*/
 
int lstack(stack *left)
{
  stack *k = left;
  if (k != NULL)
  {
    while (k != NULL)
    {
        cout<<k->info<<" ";                         
        k = k->rlink;
    }
  }
}
 
/*Функция вывода спpава налево*/
 
void rstack(stack *rigth)
{
    stack *k = rigth;
    if (k != NULL)
    {
        while (k != NULL)
        {
            cout<<k->info<<" ";                              
            k = k->llink;
        }
    }
}
 
void main()
{
  setlocale(LC_ALL, "Russian_Russia.1251");
  stack *top, *q, *k, *left, *rigth;
  int w,t;
  cout<<"Введите x:";                                  
  cin>>t;                                                     
  top = NULL;
 
  cout<<"Введите элемент списка:";                                
  cin>>w;                                                    
  k = new stack; 
  k->info = w; 
  k->rlink = NULL;
  k->llink = NULL;
  rigth = k;
  q = k; 
 
  cout<<"Введите следующий элемент списка:";                      
  cin>>w;                                                           
  while (!feof(stdin))
  {
    k = new stack;
    k->info = w;
    k->rlink = q;
 
    /*Связь нового узла с предыдущим*/
 
    q->llink = k; /*Связываем предыдущий узел с вновь созданным*/
    q = k;
    cout<<"Введите следующий элемент списка:";                           
    cin>>w;                                                               
  }
 
  /* Вывод стека */
  q->llink = NULL;
  left = q;
  cout<<"\nSleva napravo:\n";                                              
  lstack(left);
  cout<<"\nSpravo nalevo:\n";                                                  
  rstack(rigth);
  /* Удаление узлов стека*/
 
  stack *l;  /*Указатель на предыдущий узел*/
  l = k = left;
 
  while (k != NULL)
  {
    if (F(k,t)== 1)
    { 
      if (k == left)
      { /*Если самый левый*/
        q = k;
        left = k->rlink;
        left->llink = NULL;
        l = k = left;
        delete q;
      }
      else if (k == rigth)
      { /* Если самый правый*/
        q = k;
        rigth = k->llink;
        rigth->rlink = NULL;
        k = NULL;
        delete q;
      }
      else
      { /*если в середине*/
        q = k;
        l->rlink = k->rlink;
        k->rlink->llink = l;
        delete q;
        k = l->rlink;
      }
    }
    else
    {
      l = k;
      k = k->rlink;
    }
  }
  cout<<"\n_______________________\n";                      
  cout<<"\n~{ POSLE UDALENIYA "<<t<<" }~\n";                           
  cout<<"\nSleva napravo:\n";                                 
  lstack(left);
  cout<<"\nSprava nalevo;\n";
  rstack(rigth);
  cout<<"\n\007";                                             
  system("pause");
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2011, 14:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Двусвязный список (C++):

Переделать двусвязный список в двусвязный кольцевой - C++
Здравствуйте, у меня єсть двусвязный список однако он не кольцевой! как это запрограммировать? и второй вопрос как обеспечить вставку...

Сформировать список из 10 работников, используя динамическую структуру данных двусвязный список - C++
спасайте Сформировать список из 10 работников, используя динамическую структуру данных двусвязный список. Информация о работнике...

Двусвязный список (в конец двусвязного списка добавить другой список) - C++
здравствуйте, подскажите пожалуйста, как в конец двусвязного списка добавить другой список?

Составить двусвязный список на основе класса, объекты которого будут формировать этот список - C++
Составить двусвязный список на основе класса, объекты которого будут формировать этот список. В описание класса должны входить данные для...

Создать двусвязный список групп факультета, где каждая группа представляет собой односвязный список студентов - C++
Задание: создайте двусвязный список групп факультета. Каждая группа представляет собой односвязный список студентов. Помогите пожалуйста,...

Двусвязный список - C++
Привет, народ. Помогите плиз найти ошибку. #include &quot;iostream&quot; #include &quot;cmath&quot; using namespace std; struct elem { int...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2011, 14:21
Привет! Вот еще темы с ответами:

Двусвязный список - C++
Подскажите в чем ошибка, почему не выводит элементы списка в обратном порядке (выводит только один элемент) #include &lt;fstream&gt; ...

Двусвязный список - C++
Вот решил написать двусвязный список. Написаны только две функции решил попробовать работает или нет, оказалось, что нет. Компилятор...

Двусвязный список - C++
Здравствуйте, никак не могу разобраться с двусвязным списком, нашел код для разбора в интернете, но не могу понять, что необходимо писать...

Иерархия классов "Структура - Список - Кольцевой Двусвязный список" - C++
Неделю назад получил задание и срок выполнения до конца мая. Разработка иерархии классов. Структура - Список - Кольцевой Двусвязный...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru