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

Связный список и вставка элемента - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Дано натуральное число n (n>99). Определить число сотен внем http://www.cyberforum.ru/cpp-beginners/thread146527.html
Дано натуральное число n (n>99). Определить число сотен внем. на паскале это выглядит такprogram z64; {$APPTYPE CONSOLE} uses SysUtils; var a,b : integer ;
C++ Описать функцию Exp1(x,e) вещественного типа ( параметры x,e - вещественные, e>0 ) Описать функцию Exp1(x,y) вещественного типа (параметры х,у - вещественные, y>0), находящую приближенное значение функции exp(x): exp(x)=1+x+x2/(2!) +x3/(3!) + ... + xn(n!)+... http://www.cyberforum.ru/cpp-beginners/thread146521.html
Решить матрицу) C++
Характеристикой столбца целочисленной матрицы называется произведение ее целочисленных элементов. Указать номер столбца с минимальной характеристикой.
Массивы C++
Помогите построить: 1) Дан вещественный массив A. Опpеделить значения вещественного массива C по правилу: C= максимальному значению i-й строки массива А, если A>0; C=0, если A<=0 Значение...
C++ Определение класса для работы с одномерным динамическим массивом http://www.cyberforum.ru/cpp-beginners/thread146503.html
задача : В массиве А(N) поменять местами последний отрицательный элемент с максимальным элементом. делал в BC++ #include <iostream.h> #include <stdlib.h> class Massiv{ int n; int *p; ...
C++ Циклы Помогите пожалуйста) Для каждого 0.16≤ y≤ 1.6 с шагом ∆ y=0.24 при всех 0.1 <z <0.5 вычислить S=(y*x^2+z)*arcsinz, причем, если y≤0.8, то∆z=0.1, иначе ∆z=0.05 . подробнее

Показать сообщение отдельно
NNN777
299 / 157 / 19
Регистрация: 27.02.2010
Сообщений: 317
17.06.2010, 15:57
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
#include "stdafx.h"
#include <iostream>
using namespace std;
struct Node 
{
        int data;
        Node *next;
};
void print (Node *); 
int main()
{
    setlocale (LC_ALL,"Russian");
    Node *start=NULL;                    // указатель на начало списка
    int nput, buf, i, kol;                 //номера элемента для вставки и для удаления
    Node *put, *spis, *last, *prev;                //вспомогательные указатели 
    cout << "Введите количество элементов: ";
    cin >> kol;
    for (i=0; i<kol; i++)
    {
        spis=new Node;
        cout << "Элемент "<<i+1<<": ";
        cin>>spis->data;
        spis->next=NULL;
        if (start==NULL)
            start=spis;
        else
            last->next=spis;
        last=spis;
    }
    // вывод списка
    print (start);
    // вставка элемента
    spis=start;
    cout << "Номер элемента для вставки:";
    cin >> nput;
    cout << "Элекмент " << nput << ": ";
    cin >> buf;
    put=new Node;
    put->data=buf;
    put->next=NULL;
    if (nput>kol)
        nput=kol+1;
    if (nput<=1)
    {
        put->next=start;
        start=put;
    }
    else
    {
        for (i=0; i<nput-2; i++)
            spis=spis->next;
        put->next=spis->next;
        spis->next=put;
    }
    print (start);
    return 0;
}
void print (Node *spis)
{
    cout << "-------------\n";
    while(spis)
    {
        cout << spis->data<<endl;
        spis = spis->next;
    }
}
У вас, например, не так с созданием списка - а если пользователь введет количество элементов 0... вы все равно попросите ввести 1-й элемент. И вообще как-то странно организовано...
Вставка. Вы говорите: введите номер элемента, записываете номер в переменную nput, потом введите элемент и значение элемента снова записываете в переменную nput, а потом уже все идет неправильно, т.к. цикл идет до значения, а не до позиции (делает больше шагов, и spis, в конце концов, будет переведена на NULL (если введенное значение больше kol)).
Еще не уточненный момент, если у вас список из 5 элементов, а вы хотите поставить элемент на 10, будет ошибка (описанная выше).
А вообще лучше было бы это все распихать по функциям)
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru