Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Skampf
Заблокирован
1

Добавить в список элемент после элемента с заданным инф.полем [Однонаправленный список]

18.12.2015, 17:06. Просмотров 597. Ответов 2
Метки нет (Все метки)

Вообщем есть:
  • Функция создание списка
  • Функции вывода на экран
  • Функция добавление элемента с номером k

А нужно ввести переменную (char[20]) и если переменная в списке равна ВВЕДЁННОЙ переменной то добавляем в список после этого элемента.

Вообщем нужна функции которая возвращает позицию куда добавлять элемент.

Вот код
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
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
 
#define cls system("cls");
#define pause system("pause");
 
struct point{
    char*name;//Информационое
    point*next;//Адрессное
};
 
point* make_point(){
    point*p = new(point);
    char name[20];
    cout << "Введите имя: "; cin >> name;
    p->name = new char[strlen(name)+1];
    strcpy_s(p->name, 20, name);
    p->next = 0;
    return p;
}
 
void print_point(point*p){
    cout << "Имя: " << p->name;
    cout << "\n//-------//\n";
}
 
point* make_list(int n){
    point*beg = make_point();
    point*r;
    for (int i = 1; i < n; i++){
        r = make_point();
        r->next = beg;
        beg = r;
    }
    return beg;
}
 
int print_list(point*beg){
    point*p = beg;
    int k = 0;
    while (p){
        print_point(p);
        p = p->next;
        k++;
    }
    return k;
}
 
point* add_point(point*beg, int k){
    point*p = beg;
    char name[20];
    point*New = new(point);
 
    cout << "Введите имя:";
    cin >> name;
    New->name = new char[strlen(name) + 1];
    strcpy_s(New->name, 20, name);
 
    for (int i = 0; i < k - 1 && p != 0; i++)   p = p->next;
    if (p != 0){
        New->next = p->next;
        p->next = New;
    }
    return beg;
}
 
int search_point(point*beg, char name[20], int n){
 
    point*p = beg;
    int k = 0, q;
 
    while (p){
        //cout << name <<"__"<< p->name<<endl;
        if (p->name == name){ q = n - k;  add_point(beg, q); }
 
        p = p->next;
        k++;
    }
    return k;
}
 
int _tmain(int argc, _TCHAR* argv[]){
 
    setlocale(LC_ALL, "Russian");
    int n, k;
    char name[20];
 
 
 
 
    cout << "Введите кол-во списков: "; cin >> n;   point*beg = make_list(n);
    if (!print_list(beg)) cout << "\nЛист пуст";
 
    //cout << "\nВведите имя: "; cin >> k;
    cout << "Введите поиск: ";
    cin >> name;
 
 
 
 
 
 
    pause;  return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2015, 17:06
Ответы с готовыми решениями:

Добавить в однонаправленный список элемент после элемента с заданным информационным полем
Здравствуйте, помогите пожалуйста, с задачей. 1.Тип информационного поля...

Добавить в однонаправленный (двунаправленный) список элемент с заданным номером
Добавить в однонаправленный (двунаправленный) список элемент с заданным номером

Сформировать однонаправленный список и добавить элемент перед элементом с заданным ключом
задача: Сформировать однонаправленный список. Добавить элемент перед...

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

Однонаправленный список. Операции: удалить элемент из заданной позиции, добавить элемент в заданную позицию,проверка на неравенство
Помогите. Есть одна написанная. Условия: Очередь. Операции: “+” добавить...

2
olya7
497 / 311 / 234
Регистрация: 18.02.2013
Сообщений: 745
18.12.2015, 18:33 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
void insert(char *n,point *beg)
{
    point*p = beg;
    while (p!=NULL && strcmp(p->name,n)!=0) {p=p->next;}
    if (p==0){cout<<"Net podobnih zapisey"<<endl;return;}
        point *new_el=new point;
        new_el->name="123";
        new_el->next=p->next;
        p->next=new_el;
 
 
}
1
Skampf
Заблокирован
18.12.2015, 18:43  [ТС] 3
olya7, спасибо
Выручили
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2015, 18:43

Сформировать двунаправленный список. Удалить из него элемент с заданным ключом, добавить элемент с указанным номером
Записи в линейном списке содержат ключевое поле типа *char(строка символов)....

Односвязный список (за первым вхождением элемента с заданным значением z добавить все элементы списка В)
Дан непустой лин.односвяз список А в список А за первым вхождением элемента с...

Добавить после первого четного элемента массива элемент с заданным значением
Мне задали лабораторную работу, как всегда на самостоятельное изучение! Первый...


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

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

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