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

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

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

Работа с односвязным линейным списком - C++

21.01.2013, 13:00. Просмотров 740. Ответов 6
Метки нет (Все метки)

Здравствуйте, нужна ваша помощь , нужно програмка для работы с односвязным линейным списком а именно создание,удаление и поиск по значению , добавление элемента.

Искал много и толкон не нашел ничего вот пример найденного

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
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
 
 
class Spisok
{
  public:
 
typedef
struct _node {
    int value;
    struct
    _node * next;
} Node, List;
 
 // public:
List * list;
Spisok(List * list);
~Spisok();
void AddNode(List * list,int value);
int DelNode(List * list,int value);
void PrintList(List * list);
int OccList(List * list,int value );
};
 
Spisok::Spisok (List * list)
{
  list = new (_node);
  list->next=NULL;
  cout<<"list is created"<<endl;
}
 
Spisok::~Spisok()
{
  delete []list;
  cout<<"list is removed"<<endl;
}
 
void Spisok::AddNode(List * list,int value) {
    Node * node;
    if(list->next==NULL) {
        list->next = (Node*) malloc(sizeof( List));
        list->next->value=value;
        list->next->next=NULL;
        return;
    };
 
 
    if(list->next->value >= value)  {
        node = (Node*)malloc(sizeof( List));
        node->value = value;
        node->next = list->next;
        list->next = node;
    } else
        AddNode(list->next,value);
}
 
int Spisok::DelNode(List * list,int value) {
    Node * tmp;
    if(list->next==NULL) return 0;
    if(list->next->value==value) {
        tmp = list->next->next;
        free(list->next);
        list->next = tmp;
        return 1;
    } else return DelNode(list->next,value);
}
 
void Spisok::PrintList(List * list) {
    Node * tmp;
    if(list->next == NULL)  {
        printf("List is empty");
        return;
    }
    tmp = list->next;
    while(tmp !=NULL) {
        printf("%d ",tmp->value);
        tmp=tmp->next;
    };
}
 
int Spisok::OccList(List * list,int value ) {
    if(list->next == NULL) return 0;
    if(list->next->value == value)
        return 1+OccList(list->next,value);
    if(list->next->value >value )
        return 0;
    return OccList(list->next,value);
}
 
int main () {
    char command[4];
    int param1,param2,tmp;
    List  list;
        //CreateList
    Spisok A(&list);
    while(1) {
        printf("Enter command : ");
        scanf("%s",command);
        if(!strcmp(command,"pri") ) {
            A.PrintList(&list);
            printf("\n");
        };
        if(!strcmp(command,"ins") ) {
            scanf("%d",&param1);
            A.AddNode(&list,param1);
        };
        if(!strcmp(command,"del") ) {
            scanf("%d",&param1);
            if(!A.DelNode(&list,param1))
                printf("There is no given value in the list\n");
        };
        if(!strcmp(command,"occ") ) {
            scanf("%d",&param1);
            printf("There are %d entries of %d in list\n",A.OccList(&list,param1),param1);
        };
        if(!strcmp(command,"end") )
            break;
    };
        return 0;
}
но тут не смог организовать работоспособность в этой части

C++
1
2
3
4
5
int main () {
    char command[4];
    int param1,param2,tmp;
    List  list;
        //CreateList
проблемы со строкой List list; .

Помогите пожалуйста , буду очень благодарен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2013, 13:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с односвязным линейным списком (C++):

Работа с линейным односвязным (двухсвязным) списком - C++
Создать линейный односвязный (двухсвязный) список. Из списка удалить положительные элементы, превышающие заданную величину, а затем...

В чем разница между простым линейным списком, и динамическим линейным списком? - C++
вопрос в теме

Работа с односвязным списком - C++
Есть два вопроса 1)как найти сумму двух соседних элементов элемента x. 2)Как сделать чтоб функция RemovePositive удаляла все...

Работа с односвязным списком - C++
Дан односвязный список. Класс студент (фамилия группа). Сделать меню, т.е. удаление элемента из начала списка, добавление элемента в начало...

Работа с односвязным списком (удаление четных элементов) - C++
Дан класс (год выпуска, количество страниц). У меня уже есть добавление элемента в начало, просмотр результатов, меню. Надо написать...

Работа с односвязным списком, неправильно вызываются функции - C++
В int main() некорректно вызываются функции, в чем может быть дело?(программа на двух файлах) #include&lt;cassert&gt; ...

6
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
21.01.2013, 16:30 #2
C++
1
Spisok::List  list;
1
as1224
0 / 0 / 0
Регистрация: 21.01.2013
Сообщений: 8
21.01.2013, 23:33  [ТС] #3
Теперь не работает scanf

c:\users\as\documents\visual studio 2012\projects\lab_sisa\lab_sisa\исходный код.cpp(103): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
f:\visua st\vc\include\stdio.h(290): см. объявление "scanf"

Нашел вроде решение написать scanf_s да ошибка пропала но все равно не работает программа выдает

Необработанное исключение по адресу 0x731EE2D4 в lab_sisa.exe: 0xC00000FD: Stack overflow (параметры: 0x00000001, 0x001C2FC8).
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
21.01.2013, 23:58 #4
Цитата Сообщение от as1224 Посмотреть сообщение
Теперь не работает scanf
Это не ошибка, а предупреждение.
Цитата Сообщение от as1224 Посмотреть сообщение
но все равно не работает программа выдает
ну а это значит вы где-то намудрили с чем-то
1
as1224
0 / 0 / 0
Регистрация: 21.01.2013
Сообщений: 8
22.01.2013, 00:20  [ТС] #5
но понять не могу в чем именно дело...предполагаю что список не создается.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
22.01.2013, 00:31 #6
Цитата Сообщение от as1224 Посмотреть сообщение
но понять не могу в чем именно дело...предполагаю что список не создается.
Пройдите пошагово по программе и выясните где происходит ошибка
0
as1224
0 / 0 / 0
Регистрация: 21.01.2013
Сообщений: 8
22.01.2013, 01:08  [ТС] #7
да ошибка выскакивает после того как я ввел действие и выскакивает т.е. не распознает действие.

Добавлено через 23 минуты
но никак не найду ошибку
0
22.01.2013, 01:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2013, 01:08
Привет! Вот еще темы с ответами:

Работа с односвязным списком (минимизировать время выполнения программы) - C++
Нужна помощь в УСОВЕРШЕНСТВОВАНИИ именно данного списка. Проблема во времени работы,его нужно минимизировать. Приму любую помощь. Всем...

Задача с односвязным списком - C++
Ребята, нужна помощь, кто может составьте. Буду благодерен. У меня не получается, т.к руки кривые. Задача: Напишите программу,...

Реализация с односвязным списком - C++
Приветствую! Есть созданная программа: #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;clocale&gt; #include &lt;string.h&gt; #include...

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


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

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

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