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

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

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

Удаление каждого второго элемента линейного списка - C++

02.12.2010, 00:13. Просмотров 1005. Ответов 5
Метки нет (Все метки)

нужно написать функцию удаления каждого 2 элемента списка, вот код по сути требуется только подставить функцию но вобще не получается её написать, ( в тексте функция del_every_2el вот в ней и надо записать ) заранее спасибо
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
 
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
struct Elem {int data; Elem*next;};
Elem*create (int n)
{Elem*pb = new Elem; pb -> data = n; pb -> next = 0; return pb;}
void showlist ( Elem*pb)
{Elem*p = pb;
while (p)
 {cout<<" "<<p->data<<" "; p = p->next;}}
Elem*insfirst (Elem*pb, int n)
{Elem *p = new Elem; p->data = n; p->next=pb; pb = p; return pb;}
Elem*del_every_2el (Elem*pb)
{
  }
 
return pb;}
Elem*preobr (Elem*pb)
{Elem *p = pb;
while (p)
 {p->data+=2; p=p->next;}
cout<<" done"; getch(); return pb;
}
void save_list (Elem *pb)
{ char path[20]; FILE*fn;
cout<<"path:"; cin>>path;
if ((fn=fopen(path,"w"))==NULL)
 {cout<<"cannot open output file.\n"; getch(); return;}
Elem*p = pb;
while (p)
 {fprintf(fn,"%d\n", p->data); p= p->next;}
fclose(fn); cout<<" done"; getch();
}
Elem* load_list (void)
{char path[20]; FILE* fn; int n;
cout<<"path:"; cin>>path;
if ((fn=fopen(path,"r"))==NULL)
 {cout<<"cannot open output file.\n"; getch(); return 0;}
Elem*p,*pb = new Elem;
fscanf(fn, "%d\n", &n); pb->data = n; pb->next=0;
while (!feof(fn))
 {fscanf(fn, "%d\n", &n); p= new Elem; p->data = n; p->next = pb;
   pb=p;}
fclose(fn); cout<<" done"; getch(); return pb;
}
int menu(void)
{Elem*pb; char choice; int n;
begin: clrscr(); cout<<"\n";
cout<<"\n 1. Create list";
cout<<"\n 2. Append in list";
cout<<"\n 3. Show list";
cout<<"\n 4. Action";
cout<<"\n 5. Save list to file";
cout<<"\n 6. Load list from file";
cout<<"\n 7. delete every 2 element";
cout<<"\n 8. Finish";
cout<<"\n \n Your choice: "; choice=getch();
switch (choice)
 {case '1': clrscr();
  cout<<"\n number: "; cin>>n; pb= create(n); break;
  case '2': clrscr();
  cout<<"\n number: "; cin>>n; pb= insfirst(pb,n); break;
  case '3': clrscr();
  showlist(pb); getch(); break;
  case '4':
  pb=preobr(pb); break;
  case '5': clrscr();
  save_list(pb); break;
  case '6': clrscr();
  pb=load_list(); break;
  case '7': clrscr(); del_every_2el (pb); break;
  case '8': return 0;
 }
goto begin;
}
void main (void)
{clrscr(); menu();}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2010, 00:13     Удаление каждого второго элемента линейного списка
Посмотрите здесь:

Удаление элемента из линейного однонапраленного списка. - C++
Говорят, что существует множество способов удаления из списка. Вот один из них: void los::del_el() { int key; los *q, *w, *e; ...

Удаление второго и предпоследнего элемента списка - C++
Как осуществить доступ к внутренним элементам списка?

Удаление каждого M-го элемента списка - C++
Есть двусвязный список и нужно удалить каждый M элемент списка. Как такое осуществить?

Доделать удаление элемента для линейного списка "Каталог файлов" - C++
В файловой системе каталог файлов организован как линейный список. Для каждого файла в каталоге содержатся следующие сведения: -&gt; имя...

Удаление Линейного списка - C++
Доброго вечера. Вопрос следующий : Полностью ли я освободил память выделенную под ЛС следующей функцией. В функцию передается...

Дублирование вхождения каждого элемента списка One и формирование из этих значений списка Double (пояснить условие) - C++
Здравствуйте. Вот собственно само задание: В составе программы описать функцию, которая дублирует вхождение каждого элемента списка One и...

Реализация списка.Удаление хвостового элемента.Поиск элемента - C++
Всем привет,мое задание выглядит так : В класс List&lt;T&gt; из классной работы добавить следующие методы: void addHead(T...

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

В массиве вставить после каждого второго элемента минимальное непростое число - C++
Задан массив Y(k) целых чисел. Если он упорядочен, оставить его без изменения. Если массив не упорядоченный, то вставить после каждого ...

Из каждого элемента массива, начиная со второго, вычесть все остальные элементы - C++
Дан массив, из каждого элемента, начиная со второго, нужно вычесть все остальные элементы. вот пример: 1 2 3 4 5 (2 - 3 - 4 - 5 -...

Удаление элемента списка и всего списка - C++
Компилируется, но не работает. Что и как исправить? #include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;cstring&gt; #define M 5 ...

Найти сумму второго и предпоследнего элемента двунаправленного списка - C++
Помогите пожалуйста с программой, нужно найти сумму второго и предпоследнего элемента двунаправленного списка, пожалуйста..... #include...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
2918 / 1347 / 134
Регистрация: 29.11.2010
Сообщений: 2,721
02.12.2010, 00:29     Удаление каждого второго элемента линейного списка #2
Попробуй такой код ф-ции.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if (!pb) return pb;
int i=2;
Elem *prev = pb;
Elem *p = pb->next;
while (p) 
{
    if ((i++)%2 == 0)
    {
       prev->next = p->next;
       delete p;
       p = prev->next;
    };
    else
    {
       prev = p;
       p = p->next;
    }
}
return pb;

Не по теме:

Написал столько кода и запоролся на ирисках?

dre
1 / 1 / 0
Регистрация: 01.12.2010
Сообщений: 19
02.12.2010, 09:23  [ТС]     Удаление каждого второго элемента линейного списка #3
пишет что else не уместен, дословно "misplaced else"
Darky
Быдлокодер
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
02.12.2010, 10:03     Удаление каждого второго элемента линейного списка #4
lemegeton,
в 12 строке не нужна точка с запятой
lemegeton
2918 / 1347 / 134
Регистрация: 29.11.2010
Сообщений: 2,721
02.12.2010, 12:27     Удаление каждого второго элемента линейного списка #5
Влепил совершенно машинально.
dre
1 / 1 / 0
Регистрация: 01.12.2010
Сообщений: 19
02.12.2010, 15:49  [ТС]     Удаление каждого второго элемента линейного списка #6
спасибо огромное, я чет про ";" даж не заметил, правда 2 минуты потратил на проверку))
Yandex
Объявления
02.12.2010, 15:49     Удаление каждого второго элемента линейного списка
Ответ Создать тему
Опции темы

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