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

односвязные списки - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Ivanon
0 / 0 / 0
Регистрация: 25.03.2010
Сообщений: 9
25.03.2010, 23:01     односвязные списки #1
Помогите пожалуста
в проге нужно в методе класа List нужно вставить елементы с первого списка в второй после последнего вхождение заданого елемента,допустим
если есть
список
1 2 3 4
и список
2 3 4 2 5
и нужно вставить в второй список после последного вхождение елемента 2
будет
2 3 4 2 1 2 3 4 5
но у меня выскакивает ошибка при запуске програмы,связаная с методом void spus(List &t,int n)
_BLOCK_TYPE_IS_VALID(hHead->nBlockUse)
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
#include<iostream>
using namespace std;
struct Link{
    Link * next;
    int data;
    Link(int d=0):next(NULL),data(d){}
    ~Link(){}
};
class List{
private:
Link * head;
public:
    List():head(NULL){}
    List(const List & ls){
        if(!ls.head){
        head=0;
        return;}
        Link *temp=new Link(ls.head->data);
        head=temp;
        Link *Buf=ls.head->next;
        while(Buf){
        Link *temp2=new Link(Buf->data);
        temp->next=temp2;
        Buf=Buf->next;
        temp=temp2;
        }
    }
    List operator=(List &ls){
        if(!ls.head){
        head=0;
        return *this;}
        Link *temp=new Link(ls.head->data);
        head=temp;
        Link *Buf=ls.head->next;
        while(Buf){
        Link *temp2=new Link(Buf->data);
        temp->next=temp2;//
        Buf=Buf->next;
        temp=temp2;//
        return *this;
        }
    }
    
        ~List(){
        Link *Buf=head;
        while(head)
        {
            head=head->next;
            delete Buf;
            Buf=head;
        }
        }
        
        void add_end(int l){
            Link*temp=new Link(l);
            if(head==0)
            {
                head=temp;
            }
            else
            {
                Link *Buf=head;
                while(Buf->next){
                Buf=Buf->next;
                }
                Buf->next=temp;
            }
        }
        void show_all(){
            Link *temp=head;
            for(int i=1;temp;i++)
            {
                cout<<temp->data<<" ";
                temp=temp->next;
            }
        }
        void set_all(){
            int temp=1;
            while(temp!=0)
            {
                cin>>temp;
                if(temp==0)
                {
                    return;
                }
                else add_end(temp);
            }
        }
        int find_min()
        {
            int min=head->data;;
            for(Link *temp=head;temp!=NULL;temp=temp->next)
            {
                if((temp->data)<min)
                {
                    min=temp->data;
                }
            }
            return min;
        }
        void spus(List &t,int n)
        {
            Link *Buf=t.head;
            Link *node= new Link;
            while(Buf)
            {
                if(Buf->data==n)
                {                
                 node=Buf;
                }
              Buf=Buf->next;
            }
   if (node!= NULL){
    node->next=head;
   }
        }
    };
void main()
{
    int k;
    cin>>k;
    List t,t1;
    t.set_all();
    t1.set_all();
    t.spus(t1,k);
    t1.show_all();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2010, 23:01     односвязные списки
Посмотрите здесь:

C++ Односвязные списки
Односвязные списки C++
Односвязные списки C++
C++ Односвязные списки С++
C++ Односвязные линейные списки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
breate
 Аватар для breate
56 / 56 / 2
Регистрация: 23.10.2009
Сообщений: 250
26.03.2010, 01:30     односвязные списки #2
какой у тебя компилятор? мало того что у меня компилировалось так еще и правильно работало
Ivanon
0 / 0 / 0
Регистрация: 25.03.2010
Сообщений: 9
27.03.2010, 12:31  [ТС]     односвязные списки #3
Visual Studio
прога компилится,но в програме вибивает ерор
подскажите кто знает,уже все перепробывал,не получается (
breate
 Аватар для breate
56 / 56 / 2
Регистрация: 23.10.2009
Сообщений: 250
27.03.2010, 15:25     односвязные списки #4
я тебе ничего не скажу, у меня все тесты проходит без проблем, пройдись F10 и F11 по коду PS у меня MSVS 2008
Ivanon
0 / 0 / 0
Регистрация: 25.03.2010
Сообщений: 9
27.03.2010, 15:32  [ТС]     односвязные списки #5
пробывал на двох компютерах,не работает,не понимаю корень проблемы
дебагать пробывал,не нашел ничего (
breate
 Аватар для breate
56 / 56 / 2
Регистрация: 23.10.2009
Сообщений: 250
27.03.2010, 15:35     односвязные списки #6
погодь у тебя на каком тесте сыпится, напиши ну там "6 5 4 6 4 6 0"
Ivanon
0 / 0 / 0
Регистрация: 25.03.2010
Сообщений: 9
27.03.2010, 15:36  [ТС]     односвязные списки #7
у меня проблемы с методом void spus(List &t,int n)
а именно в 115 рядке
node->next=head;
если етот рядок закоментить,все работает,ничего не вилетает
breate
 Аватар для breate
56 / 56 / 2
Регистрация: 23.10.2009
Сообщений: 250
27.03.2010, 15:39     односвязные списки #8
у меня вылетела в случае ели k=5 1-й 1 2 5 4 6 3 2 5 2-й 1 23 6 8 5 3 6 4 5 4 ща проверю, возмонно плохо находит максимум
Ivanon
0 / 0 / 0
Регистрация: 25.03.2010
Сообщений: 9
27.03.2010, 15:40  [ТС]     односвязные списки #9
оно не должно находить максимум,оно должно находить последнее вхождение заданого елемента
breate
 Аватар для breate
56 / 56 / 2
Регистрация: 23.10.2009
Сообщений: 250
27.03.2010, 16:06     односвязные списки #10
выложи тесты на которых гоняешь программу и номер студии в которой пишешь

Добавлено через 11 минут
на Windows7 у меня ничего не ссыпается.какая у тебя оь? Деструктор напиши! на линуксе у меня выскачила ошибка free().. - тобишь проблемы с очисткой памяти
Ivanon
0 / 0 / 0
Регистрация: 25.03.2010
Сообщений: 9
27.03.2010, 16:27  [ТС]     односвязные списки #11
MS VS 2008
ХП
2
1 2 3 4 0
2 3 4 2 5 0
впрочем,вибивала ошибка и при вашем тесте
деструктор есть там
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2010, 16:32     односвязные списки
Еще ссылки по теме:

Односвязные списки C++
односвязные списки С++ C++
C++ Односвязные списки

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

Или воспользуйтесь поиском по форуму:
breate
 Аватар для breate
56 / 56 / 2
Регистрация: 23.10.2009
Сообщений: 250
27.03.2010, 16:32     односвязные списки #12
я сейчас перепишу ее и дам тебе свой код скомпилить раскажешь про ошибки выполнения были небыли можешь написать мне в асю или скайп 424-038-793, breate.by
Yandex
Объявления
27.03.2010, 16:32     односвязные списки
Ответ Создать тему
Опции темы

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