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

Односвязный список с добавлением нового элемента в конец. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.76
Maslova Cath
0 / 0 / 1
Регистрация: 06.12.2011
Сообщений: 3
07.12.2011, 00:34     Односвязный список с добавлением нового элемента в конец. #1
Здраствуйте. Мне нужна ваша помощь. Есть программа которая строит список из k элементов выводит его на экран затем удаляет элемент N из списка, и выводит новый список на экран.
Как на примере этой програмы сделать аналогично лишь с разницой что новый элемент нужно добавлять в конец списка?
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
#include "iostream"
#include "conio.h"
using namespace std;
//Обявление узла списка
struct node
{
    int data;
    node *next;
};
//Добавление элементов в начало списка
node *add_list(node *start)
{
    node *esp;
    esp=new node;
    cout<<"Введите элемент:\n";
    cin>>esp->data;
    if(start)
    {
        esp->next=start;
        start=esp;
        return esp;
    }
    esp->next=0;
    return esp;
}
//Функция вывода списка на экран
void show_list(node *start)
{
    if(start)
    {
        cout<<start->data<<" ";
    show_list(start->next);
    }
}
//Функция удаления эемента по номеру
int del(node **start, int number)
{
    node *pre=0, *curr=*start;
    for(int i=1; curr; i++)
    {
        if(i==number)
        {
            if(pre)
                pre->next=curr->next;
            else
                *start=curr->next;
            delete curr;
            return 1;
        }
        pre=curr;
        curr=curr->next;
    }
    return 0;
}
 
void main()
{
    int k;
    cout<<"Введите количество элементов:\n";
    cin>>k;
    node *start=NULL;
    start=add_list(start);
    for(int i=1; i<k; i++)
        start=add_list(start);
    cout<<"Список построен:\n";
    show_list(start);
    int N;
    cout<<"\nВведите номер удаляемого элемента N:\n";
    cin>>N;
    if(del(&start,N))
        cout<<"Элемент N: "<<N<<" успешно удалён.\n";
    else
    cout<<"Элемент N: "<<N<<" не найден.\n";
    cout<<"Список построен:\n";
    show_list(start);
    _getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2011, 00:34     Односвязный список с добавлением нового элемента в конец.
Посмотрите здесь:

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
07.12.2011, 02:19     Односвязный список с добавлением нового элемента в конец. #2
вроде так, если не упустил ничего
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
typedef struct list
{
    int value;
    struct list *next;
} list_t;
 
void add_in_tail( list_t *current, int val)
{
    list_t *point;
    
    if ( (point = malloc(sizeof(list_t)) == NULL )
        exit ( EXIT_FAILURE);
    else
    {
        while ( current->next )
            current = current->next;
        
        point->value = val;
        point->next = NULL;
        current->next = point;
    }
}
Yandex
Объявления
07.12.2011, 02:19     Односвязный список с добавлением нового элемента в конец.
Ответ Создать тему
Опции темы

Текущее время: 09:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru