С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

Односвязный список - C++

15.04.2010, 16:15. Просмотров 621. Ответов 5
Метки нет (Все метки)

Нужно составить код для односвязного списка (формирование и вывод).
При этом нельзя использовать классы((

Вроде код правильный, но не работает...
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
#include "stdafx.h"
 
#include <iostream>
using namespace std;
 
struct sll
{
    char inf; // информационная часть
    sll *next; // следующий элемент
};
sll *form_sp(sll *head) 
{ 
sll *tek; 
char val; 
head = NULL; 
do 
{ 
tek = new (sll); 
tek->next = NULL; 
cout<<"Input symbol ('*' - End): "; 
cin>>val; 
tek->inf = val; 
head = tek; 
if(tek->next != NULL) 
tek->next=tek; 
}while(val != '*'); 
cout<<"\n End spisok \n"; 
return tek; 
} 
void destroy(sll *tek)
{
free(tek);
}
void out_sp(sll *top) 
{ 
sll* tek; 
tek = top->next; 
cout<<"\n\n Print spisok :\n\n"; 
do 
{ 
cout<<""<<tek->inf;  
tek=tek->next;
} while(tek != NULL); 
} 
void main(void) 
{ 
sll *top; 
top=NULL; 
top=form_sp(top); 
out_sp(top); 
cout<<"\n\nEnd program\n"; 
}
В чем проблема?..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2010, 16:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Односвязный список (C++):

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

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

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

Односвязный список - C++
Посмотрите программу, правильно ли я вывожу список? Почему список выводится только из 7 цифр, и как можно написать с помощью функций?...

Односвязный список - C++
Есть связной список. У класса есть метод добавления элементов(additem()). Надо исправить метод, чтобы он добавлял элемент не в начало, а в...

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

5
uggway
219 / 133 / 9
Регистрация: 12.04.2010
Сообщений: 248
15.04.2010, 16:55 #2
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
#include "stdafx.h"
 
#include <iostream>
using namespace std;
 
struct sll
{
        char inf; // информационная часть
        sll *next; // следующий элемент
};
 
sll *form_sp(sll *head)
{
sll *tek,*tmp;
char val;
head = NULL;
do
{
   cout<<"Input symbol ('*' - End): ";
   cin>>val;
   if(val=='*') break;
   tmp = new (sll);
   tmp->next = NULL;
   tmp->inf = val;
   if(!head) {head = tmp; tek = head;}
   else {tek->next=tmp; tek = tmp;}
}while(true);
cout<<"\n End spisok \n";
return head;
}
void destroy(sll *tek)
{sll * t;
    while(t=tek->next){free(tek); tek = t;}
}
void out_sp(sll *top)
{
sll* tek;
tek = top;
cout<<"\n\n Print spisok :\n\n";
do
{
cout<<""<<tek->inf;
tek=tek->next;
} while(tek != NULL);
}
 
void main(void) 
{ 
sll *top; 
top=NULL; 
top = form_sp(top); 
out_sp(top); 
cout<<"\n\nEnd program\n"; 
}
1
BlueBerry
0 / 0 / 0
Регистрация: 08.04.2010
Сообщений: 10
15.04.2010, 18:36  [ТС] #3
Все теперь понятно)))
Спасибо за быстрый ответ!

Добавлено через 52 минуты
А как будет выглядеть вышеописанный код, если нужно удалить первый элемент, заданный значением поля key?
Я что-то пыталась сделать...
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
void Deleted()
{
    sll *del=NULL;
    int key=-1;
    if (head==NULL)
    {
        cout<<"\nEmpty list!\n");
        continue;
    }
    cout<<"\nInput unumber of deleted element: ";
    cin>>key;
    del=head;
    if (del->next==key)
    {
        head=del->next;
        delete del;
        continue;
    }
    if (del->next==0)
    {
        cout<<"\nNo element!";
        break;
    }
    continue;
}
0
uggway
219 / 133 / 9
Регистрация: 12.04.2010
Сообщений: 248
15.04.2010, 21:42 #4
А у нас тут нет поля key... Если его добавить в структуру, то можно и по полю key, а так только по полю inf :
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
void Delete(sll * head)
{
       char inff;
       sll * t, *prevt;
       if (head==NULL)
        {
                cout<<"\nList is empty!\n");
                return;
        }
       cout<<"Input inf:\n"
       cin>>inff;
       prevt = NULL;
       t = head;
       while(t){
              if(t->inf == inff){
                     if(prevt!=NULL) prevt->next = t->next;
                     else head = t->next;
                     delete t;
                     return; 
              }
              prevt = t;
              t=t->next;
       }
       cout<<"\nNo element!";
}
0
BlueBerry
0 / 0 / 0
Регистрация: 08.04.2010
Сообщений: 10
15.04.2010, 22:18  [ТС] #5
Если не ошибаюсь, то главная функция будет выглядеть так:
C++
1
2
3
4
5
6
7
8
9
10
11
void main(void) 
{
    sll *top;
    sll *head;
    top=NULL; 
    top=form_sp(top); 
    out_sp(top); 
    Delete(head);
    cout<<"\n\nEnd program!\n"; 
    cout<<"\n=(^_^)=\n"; 
}
Но при компиляции выходит сообщение об ошибке...
0
uggway
219 / 133 / 9
Регистрация: 12.04.2010
Сообщений: 248
16.04.2010, 08:26 #6
Немножко не так...
C
1
Delete(top);
0
16.04.2010, 08:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2010, 08:26
Привет! Вот еще темы с ответами:

Односвязный список - C++
Смотрю уроки по односвязному списку. У автора в 37 строке кода происходит инициализация структуры. Но как программа определит, что значения...

Односвязный список - C++
Начал читать про односвязные списки и никак не пойму, зачем мы выделяем память под первый элемент списка? Мы сначала определяем указатель...

Односвязный список - C++
Доброго времени суток. Помогите, пожалуйста, решить задачу: Реализовать односвязный список, с возможностью его разворота в обратную...

Односвязный список - C++
Доброй ночи! Вроде все написала правильно, прога должна читать из файла KR8+.txt и записывать один элемент в KR8.txt в конец списка... но...


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

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

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