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

Списки. Функции добавление списка в конец и в середину другого списка. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти наименьший диагональный элемент и его номер среди четных по номеру и нечетных по величине отрицательных элементов http://www.cyberforum.ru/cpp-beginners/thread417189.html
Найти наименьший диагональный элемент и его номер среди четных по номеру и нечетных по величине отрицательных элементов
C++ Кто может объяснить? Кто может объяснить как это делать? Задание 1. В оперативной памяти вектор int X расположен, начиная с адреса B7F0. Какие значения примут выражения: а) X+1; б) X+5; в) X-4? А)B7F2 б)B7G0 в)B7I2 Задание 2. В программе объявлен массив: int P ={0, 2, 4, 5, 6, 7, 9, 12}; Какие значения примут выражения: а) P ; б) *P; в) *(P+4); г) *(P+P)? А)5 б)0 в)6 г)6 http://www.cyberforum.ru/cpp-beginners/thread417171.html
C++ Какое значение примет переменная s после выполнения следующих операторов?
int i, s=10, a=3; for (i=1; i<4; i++) if (i==a) s=s*a*a; else s=a; s=s/a;
Моделирование C++
Помогите пожалуйста с заданием, вообще не представляю как его делать. задание в фаиле.
C++ Как правильно подключить модули? http://www.cyberforum.ru/cpp-beginners/thread417142.html
Задача: Даны натуральное число n, действительные числа x1,y1; x2,y2;... xn,yn;. Найти площадь n-угольника, вершины которого при некотором последовательном обходе имеют координаты (x1,y1); (x2,y2);... (xn,yn). (Определить процедуру вычисления площади треугольника по координатам его вершин.) Нужно решить с использованием модулей. Не могу понять что не так. Есть main.cpp: #include...
C++ Пересечение прямоугольников на плоскости привет! ребят помогите, пожалуйста.. все по порядку: задача: Реализовать класс, позволяющий хранить данные о координатах прямоугольника на плоскости. Создать конструкторы, а также методы, позволяющие вычислить периметр и площадь прямоугольника. Создать в основной части программы два объекта этого класса и выяснить, пересекаются ли два прямоугольника. вот я создал 2 объекта, сделал методы... подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
26.12.2011, 23:19     Списки. Функции добавление списка в конец и в середину другого списка.
KOPC1886, я начал завтра доведу, внимательно изучи(подумай почему я так сделал, в єтот раз коментов дал больше поймёшь свои ошибки)
Nodes.h
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
#include <iostream>
using namespace std;
struct Node
{
        char a;
        Node *next;
        Node *prev;
 
};
 
 
Node * first(char a);
void add(Node **pend, char a);
void PrintList(Node *pbeg);
Node *searchBeg(Node *pv);
Node *searchEnd(Node *pv);
///////////////////////////////////////////////////////////////////
 
// ÔîðìèðîâГ*Г*ГЁГҐ ïåðâîãî ýëåìåГ*ГІГ*
Node * first(char a)
{
    Node *pv = new Node;
    pv->a = a;
    pv->next = 0;
    pv->prev = 0;  
    return pv;
}
 
// ÄîáГ*âëåГ*ГЁГҐ Гў ГЄГ®Г*ГҐГ¶ Г±ГЇГЁГ±ГЄГ*
void add(Node **pend,char a)
{
    Node *pv = new Node;
    pv->a    = a; 
    pv->next = 0; 
    pv->prev = *pend;
    (*pend)->next = pv;
    *pend = pv;
}
 
/////////////////
// ГЏГҐГ·Г*ГІГј Г±ГЇГЁГ±ГЄГ*
void PrintList(Node *pbeg)
{
    // pv ïðîáåãГ*ГҐГІ ГЇГ® Г±ГЇГЁГ±ГЄГі, Г*Г*Г·ГЁГ*Г*Гї Г± ãîëîâû
    Node *pv = pbeg;
    while(pv)// ïîêГ* Г*ГҐ ГЄГ®Г*ГҐГ¶ Г±ГЇГЁГ±ГЄГ*, ГЇГҐГ·Г*ГІГ*ГІГј Г§Г*Г*Г·ГҐГ*ГЁГҐ Г¤Г*Г*Г*ûõ ГІГҐГЄГіГ№ГҐГЈГ® óçëГ* 
    {
        cout<<pv->a;
        pv = pv->next; // ïåðåéòè ГЄ ñëåäóþùåìó óçëó 
    }
}
 
//////////////////////
Node *searchBeg(Node *pv)
{
    while(pv->prev)
        pv = pv->prev;
    return pv;
}
 
//////////////////////
Node *searchEnd(Node *pv)
{
    while(pv->next)
        pv = pv->next;
    return pv;
}
 
//////////////////////////////
Node * find(
            Node * pv, char a
            /*int i - îïÿòü ГІГ» Г±Г® ñâîèì i Гў Г±ГЇГЁГ±ГЄГҐ Гі ГІГҐГЎГї Г·Г*ðû âîò ГЁ ГЁГ№ГЁ Г·Г*ðû*/
            )
{
    //Г…Г±ГІГј ñïèñîê Гў ГЄГ*êîé ГІГ® ïîçèöèè îòìГ*òûâГ*ГҐГ¬ ГўГ*Г*Г·Г*ëî
    Node *pbeg = searchBeg(pv);//Г*Г* ГўГ±ГїГЄГЁГ© ñëó÷Г*Г© îòìГ*òûâГ*ГҐГ¬
    //Г€ Г±Г*Г*Г·Г*Г«Г* óæå ГЁГ№ГҐГ¬ Г*Г*Гё char a ñðåäè Г·Г*ðîâ Г±ГЇГЁГ±ГЄГ* Г* Г*ГҐ int i
    //Г¤Г*ГўГ*Г© óæå ñëóøГ*Г© ìåГ*Гї èëè Г*ГҐ ïðîñè òîãäГ* Г® ïîìîùè!
    while (pbeg->next)
    {
        if (pbeg->a == a)
            break;
        pbeg = pbeg->next;
    }
    return pbeg;
}
main.cpp
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
// Списки и структуры.cpp : Defines the entry point for the console application.
//
#include "Nodes.h"
 
int main()
{
    Node *list1 = first('a'); // Формирование первого элемента списка 1
    Node *list2 = first('e'); // Формирование первого элемента списка 2
    Node *pbeg1 = list1;
    Node *pbeg2 = list2;
    // Спискb заканчивается, едва начавшись
    int size1;
    int size2;
    int i, scob = 0;
    char Form1[]={"bczxv"};//из массива в список №1
    size1 = strlen(Form1);
    for (i = 0; i < size1; i++)
    {
        add(&list1, Form1[i]);
        if (Form1[i]=='(')                            
            scob++;
        if (Form1[i]==')')
            scob--;   
    }   
    cout<<"\nList 1 :\n";
    PrintList(pbeg1);
    char Form2[]={"frt"};//из массива в список №2
    size2 = strlen(Form2);
    for (i = 0; i < size2; i++)
        add(&list2,Form2[i]);   
    cout<<"\nList 2 :\n";
    PrintList(pbeg2);  
    cout <<endl;
    cout<<"Enter char to find : ";
    char chr;cin>>chr;
    Node *pf = find(pbeg1,chr);
    Node *pend1 = searchEnd(pbeg1);
    Node *pend2 = searchEnd(pbeg2);
    Node *nextf = pf->next;
    if(!pf)
        cout<<"List1 not contain char : "<<chr<<endl;
    else
    {
        Node *pins = pend2;
        pins->next = nextf;
        //Не надо сотри - я просто показал стадии вставки
        //cout<<"\nTransforming List2\n";
        //PrintList(pbeg2);
        pbeg2->prev = pf;
        pf->next = pbeg2;
        cout<<"\nTransforming List1\n";
        PrintList(pbeg1);
        cout<<"\nInserting List2 in pos of char : "<<chr<<" of List1 complete\n";
    }
    system("pause");
    return 0;
}
Миниатюры
Списки. Функции добавление списка в конец и в середину другого списка.  
 
Текущее время: 01:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru