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

Вставка списка. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Помогите разобраться в программе (классы, исключения) http://www.cyberforum.ru/cpp-beginners/thread382965.html
Всем привет. Есть проблема. Через 5 дней надо сдать в универе все долги, которые накопились по программированию (а это 3 лабы). Две лабы пока буду писать самостоятельно, а в виду нехватки времени, 1 лабу мне дали одногруппники готовую. Но я пытался в ней разобраться (2 дня потратил) - и воообщееееее, ну никак не могу вчехлиться. А от товарищей помощи не добьешься, знаете же как обычно неохотно...
C++ Какой жгуче зеленый цвет символов в консоли? #include <iostream> #include <conio.h> #include <stdlib.h> #include <windows.h> #include <stdio.h> #include <string> using namespace std; int main(int argc, char * argv) { int a; http://www.cyberforum.ru/cpp-beginners/thread382962.html
Получить последовательность b1,b2....bn C++
1)Получить последовательность b1,b2....bn, n<=50,если 2) Нужны коды на языке си
Написать программу! C++
Напишете программу, состоящую из трех процедур и основных программы. Первая процедура организует ввод двух целых чисел Х и У, вторая проверяет их суму, третья выводит результатю Используйте эти процедуры в основной программе. Используйте Х и У как глобальные переменные.
C++ Задание с матрицой http://www.cyberforum.ru/cpp-beginners/thread382950.html
Дано действительную квадратную матрицу порядка n. Найти все нечетные элементы в заштрихованной области. Опишите сам принцип как искать в этой заштрихованной области и как искать нечетные в ней спасибо)
C++ Ошибка народ, всем привет вот столкнулся с такой проблемкой на компе прога компилируется норм, вот скинул на нетбук и вылазит такая ошибка: помогите плиз нужно срочно...( подробнее

Показать сообщение отдельно
KOPC1886
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352

Вставка списка. - C++

13.11.2011, 15:30. Просмотров 625. Ответов 4
Метки (Все метки)

Здравствуйте!) У меня есть два списка. Мне нужно вставить один список в другой. Вот что у меня получилось.
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
// Списки и структуры.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include "H1.h"
using namespace std;
 
//void sk(Node *pbeg,Node *pend);
 
int _tmain(int argc, _TCHAR* argv[])
{
    Node *pbeg = first('a'); // Формирование первого элемента списка 1
    Node *pend = pbeg;
    Node *n2=first('e');// Формирование первого элемента списка 2
    Node *pendn=n2;
    // Спискb заканчивается, едва начавшись
    
    /*
     ifstream fin("array.txt", ios::in);
     if (!fin)      cout << "Not file!"<< endl;
     int nrow, i;
     fin >> nrow;
     char *M = new char [nrow];
     for (i = 0; i < nrow; i++)      fin >> *(M + i);
*/
    int size;
    int size2;
    int ind;
    int scob=0;
    char Form[]={"bcd"};//из массива в список №1
    size=strlen(Form);
    for (int i = 0; i<size; i++)
    {
        add(&pend,Form[i]);
        if (Form[i]=='(')
        {               
            scob++;
            ind=i;
            
        }
        if (Form[i]==')')
        {
            scob--;
            ind=i;
        }   
    }       
    Node *pv = pbeg;
    Node *pk;
    char Temp[]={"frt"};//из массива в список №2
    size2=strlen(Temp);
    for (int i = 0; i<size2; i++)
    {   
        add(&pendn,Temp[i]);            
    }
    //incert(pbeg, &pend, 'y',&pendn);
    // Удаление элемента 5
    //if(!remove (&pbeg, &pend, Form[3]))cout << "не найден";
    // Вставка элемента 200 гюсле элемента 2:
    while (pv)
    {   
        /*
        if(pv->a=='(')
        {                   
            pk=pv;          
            while(pk->next!=NULL)
            {
                pk = pk->next;
                if(pk->a==')')
                {
                    pk->a=' ';
                    pv->a=' ';
                    break;
                }               
            }   
        }
        */
        
        //Вставка списка №2 в список №1
        if(pv->a=='c')
        {
            pk=pv;      
            pk->next=n2->next->prev;
        }   
        // вывод списка на экран
        cout << pv->a;
        pv = pv->next;
        
    }
    cout <<endl;
    
/*
    for(pv = pbeg; pv!=0; pv = pv-> next)
    {
        if(pv->a=='k')
        {
            pk=pv;
            pk=n2->next->prev;
        }
        cout<<pv->a;
    }
    
 
    
    if (scob> 0)
           cout << "( bigger"<<ind<<endl;
    else if (scob< 0) 
           cout << ") bigger"<<ind<<endl;
    else if (scob == 0) cout << "Good";
    */
 
    return 0;
}
 
/*void sk(Node **pbeg,Node **pend)
{
    Node *pv=new Node;
    if(pv->a=='(')
        {                   
            Node *pk=pv;            
            while(pk->next!=NULL)
            {
                pk = pk->next;
                if(pk->a==')')
                {
                    pk->a=' ';
                    pv->a=' ';
                    break;
                }               
            }   
        }
 
}
*/
У меня получается так...список№1 состоит из "abcd", а список№2 состоит из "efrt". Когда я вставляю список №2 в список №1 после символа 'c', то у меня пропадает символ 'd', хотя он должен быть последним элементом всего списка(список№1 + список№2). Как это исправить? Я не очень шарю в указателях....
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru