Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
soavexe
0 / 0 / 0
Регистрация: 27.12.2015
Сообщений: 1
1

Реализация односвязного списка (функции добавления и удаления элементов)

26.06.2016, 14:58. Просмотров 207. Ответов 0
Метки нет (Все метки)

Не работают функции добавления и удаления элементов. Прошу помочь исправить ошибки.


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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#include <stdio.h> 
#include <stdlib.h> 
#include <conio.h> 
#include <clocale> 
 
 
struct Item { 
int info; 
Item* next; 
}; 
Item *first = NULL;
void add()
{   Item *first;
    int data;
    if (first==NULL)
    {   first=new (Item);
        printf("Введите эл-т \n");
        scanf("%d",&first->info);
        first->info=data;
        first->next=NULL;
    }
    else
    {   Item *p;
        p=first;
        while (p->next!=NULL)
        {   p=p->next;
        }
        p->next=new (Item);
        printf("Введите эл-т \n");
        scanf("%d",&p->info);
        p=p->next;
        p->info=data;
        p->next=NULL;
    }
}
void del()
{Item *first;
Item *p, *p1;
int data=0;
p=first;
{
if (p->info==data)
    {   first=p->next;
        delete p;
    }
    else
    {   while (p->next->info!=data)
        {   p=p->next;
        }
        p1=p->next;
        p->next=p->next->next;
        delete p1;
    }
}
}
void main ( ) 
{ 
setlocale(0,"Rus"); 
printf("Реализуйте однонаправленный список. Необходимо предусмотреть режим поиска требуемых элементов.\n"); 
printf("Вводите элементы для окончания нажмите ноль\n"); 
Item *first = 0 , *end = 0;
Item *p, *p1; 
int i; 
for (;;) { 
scanf("%d",&i); 
if ( i == 0 ) 
{ 
break; 
} 
p = new Item; 
p->info = i; 
p->next = 0; 
if( first == 0 ) 
first = p; 
else 
end->next=p; 
end=p; 
} 
printf("Ваш cписок = "); 
p = first; 
while (p) 
{ 
printf("%d ",p->info); 
p = p->next; 
} 
printf("\n"); 
printf("Какой элемент вы хотите найти? = "); 
int n,k = 0,z=0,s=0,b=0,v=0,a=0; 
scanf("%d",&n); 
p = first; 
while(p) 
{ 
if(p->info==n) 
{ 
printf("ваш элемент находиться на %d позиции , ваш элемент = %d\n",k+1,p->info);a++; 
} 
p = p->next;k++; 
} 
if(a == 0 ) 
{ 
printf("Такого элемента нет"); 
} 
printf("\n"); 
do{ 
k=0;a=0; 
printf("\n"); 
printf("Для продолжения поиска нажмите кнопку 2");printf("\n"); 
printf("Для просмотра списка нажмите кнопку 4");printf("\n"); 
printf("Для завершения нажмите кнопку 3");printf("\n"); 
printf("Для удаления элементов нажмите кнопку 5");printf("\n");
printf("Для добавления элементов нажмите кнопку 6");printf("\n");
printf("\n"); 
scanf("%d",&b); 
if(b==3) 
{ 
printf("программа завершена\n"); 
} 
if(b==5)
{printf("Все элементы удалены. Список пуст\n");
while(p){
del();
}}
if(b==4) 
{ 
printf("Ваш cписок = "); 
p = first; 
while (p) 
{ 
printf("%d ",p->info); 
p = p->next; 
} 
printf("\n"); 
} 
if (b==6)
{add();
}
if(b==2) 
{ 
p = first;n=0;printf("Какой элемент вы хотите найти? = "); scanf("%d",&n); 
while(p) 
{ 
if(p->info==n) 
{ 
printf("ваш элемент находиться на %d позиции , ваш элемент = %d\n",k+1,p->info);a++; 
} 
p = p->next; 
k++; 
} 
if(a == 0 ) 
{ 
printf("Такого элемента нет"); 
} 
printf("\n");k=0;n=0;a=0; 
} 
 
}while(b!=3); 
printf("Нажмите любую кнопку для выхода"); 
getch(); 
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2016, 14:58
Ответы с готовыми решениями:

Реализация односвязного списка
Здравствуйте! Программа падает, судя по тестам, после команды list_clear,...

Реализация стека на основе односвязного списка
typedef int Data; typedef struct Stack * pStack; pStack CreateStack(Data...

Массивы.Организация добавления ,удаления элементов
1.Задан целочисленный массив размера N. Удалить из массива все элементы,...

Segmentation fault в функции печати односвязного списка
Доброго времени суток, программа первый список печатает, два другие нет, в чем...

Удаление всех элементов односвязного списка
есть односвязный список из struct el{ int val; struct el*...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2016, 14:58

Реализовать простой стек, с функциями добавления и удаления элементов
Реализовать простой стек на си, с функциями добавления в стек и удаления из...

Освобождение памяти от элементов циклического односвязного списка
Структура имеет вид: struct Node { char snp; char pos; char...

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


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

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

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