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

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

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

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

02.12.2010, 00:13. Просмотров 1041. Ответов 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();}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2010, 00:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удаление каждого второго элемента линейного списка (C++):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
lemegeton
2924 / 1353 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
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;

Не по теме:

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

1
dre
1 / 1 / 0
Регистрация: 01.12.2010
Сообщений: 19
02.12.2010, 09:23  [ТС] #3
пишет что else не уместен, дословно "misplaced else"
0
Darky
Быдлокодер
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
02.12.2010, 10:03 #4
lemegeton,
в 12 строке не нужна точка с запятой
1
lemegeton
2924 / 1353 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
02.12.2010, 12:27 #5
Влепил совершенно машинально.
1
dre
1 / 1 / 0
Регистрация: 01.12.2010
Сообщений: 19
02.12.2010, 15:49  [ТС] #6
спасибо огромное, я чет про ";" даж не заметил, правда 2 минуты потратил на проверку))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2010, 15:49
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.12.2010, 15:49
Ответ Создать тему
Опции темы

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