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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
champ32
0 / 0 / 0
Регистрация: 02.11.2010
Сообщений: 27
#1

Двусвязный циклический список - C++

13.01.2012, 12:01. Просмотров 1431. Ответов 2
Метки нет (Все метки)

помогите исправить ошибки впрограмме не знаю че делать(компилятор dev-c++)
заранее спасибо
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
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <conio.h>
using namespace std;
 
 
template <class T> class list{
    class elem{             
    public:                     
        T *pd;
        elem *next,*prev;       
        int remove(){           
            if (next==this)     
                return 1;       
            next->prev=prev;    
            prev->next=next;    
            return 0;}          
        void before(elem *p){   
            next=p;             
            prev=p->prev;
            p->prev->next=this; 
            p->prev=this;       
            }                   
        elem(T *s) {pd=s; next=prev=this; }
        ~elem() {}              
        };
    elem *head;
public:
    void end(T *s){             
        if (head==NULL) head=new elem(s);
        else (new elem(s))->before(head);
        }                       
    void front(T *s){           
        end(s); head=head->prev;
        }
    void sort();
    operator int();             
    list() { head=NULL; }
    ~list();
 
    template <class T>   friend ostream & operator<<(ostream &O , list<T> &L);
    template <class T> friend istream & operator>>(istream &I,list<T> &L);
};
 
 
 
template <class T> ostream &operator<<(ostream &O ,list<T> &L)
{   
    T *p;
    int n=L;            
    list<T>::elem *p=L.head;
    O << n << endl;
    while(n--!=0){          
        O << *p->pd << endl;
        p=p->next;
        }
    return O; }
 
 
 
 
//---------------------------------------------
template <class T>  istream &operator>>(istream &I,list<T> &L){
        int n; I >> n;          
        T val;                  
        while(n--!=0){I >> val; L.end(val); }
        }
        
    
 
template <class T> list<T>::~list(){
    int k;
    do  {                   
        elem *q=head->prev; 
        k=q->remove();      
        delete q;           
        } while(k==0);  
    }
 
template <class T> list<T>::operator int(){
    elem *p;     
    if (head==NULL) return 0;
    list<T>::elem *p; int n;
    for (p=head->next,n=1; p!=head;n++,p=p->next);
    return n;
    }
 
 
 
template <class T> void list<T>::sort(){
if (head==NULL || head->next==head) return;
    elem *q,*out,*p;        
    q=head->prev;           
    q->remove();            
    q->next=q->prev=q;
    out=q;
    int k;
    do {                    
        q=head->prev;
        k=q->remove();
        p=out;               
        do  {               
        if (*q->pd < *p->pd) break;
        p=p->next;
        } while(p!=out);    
        q->before(p);       
        if (*q->pd < *out->pd) 
            out=q;          
    } while(k==0);
    head=out;               
    }
 
 
 
int main(){
int c[10]={4,7,3,4,5,2,8,6,7,5};
list<int> A;
for (int i=0; i<10; i++) A.end(&c[i]);
cout << A;
A.sort();
cout << A;
getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2012, 12:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Двусвязный циклический список (C++):

Циклический двусвязный список - C++
Здравствуйте, задали написать програмку: Организовать заданную структуру данных. Определить структуру элемента и написать подпрограммы...

Двусвязный циклический список - C++
Необходимо было создать двусвязный циклический список,вот что у меня получилось: #include &lt;iostream&gt; #include &lt;clocale&gt; using...

Циклический двусвязный список - C++
Помогите написать функцию удаления всех элементов списка с заданным значением. Не могу додуматься как сделать. struct Node { int...

Как переделать двусвязный список в циклический c++ - C++
Как переделать двусвязный список в циклический c++

Разработать абстрактный тип данных (АТД) «Двусвязный циклический список» - C++
Разработать абстрактный тип данных (АТД) «Двусвязный циклический список». АТД должен обеспечивать выполнение следующих операций: ...

Переделать двусвязный список в двусвязный кольцевой - C++
Здравствуйте, у меня єсть двусвязный список однако он не кольцевой! как это запрограммировать? и второй вопрос как обеспечить вставку...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Haster
инженер-системотехник
109 / 108 / 2
Регистрация: 10.03.2009
Сообщений: 533
13.01.2012, 13:35 #2
В чем ошибки?
champ32
0 / 0 / 0
Регистрация: 02.11.2010
Сообщений: 27
13.01.2012, 13:50  [ТС] #3
42 C:\main.cpp declaration of `class T'
8 C:\main.cpp shadows template parm `class T'
52 C:\main.cpp dependent-name ` list<T>::elem' is parsed as a non-type, but instantiation yields a type
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2012, 13:50
Привет! Вот еще темы с ответами:

Сформировать список из 10 работников, используя динамическую структуру данных двусвязный список - C++
спасайте Сформировать список из 10 работников, используя динамическую структуру данных двусвязный список. Информация о работнике...

Двусвязный список (в конец двусвязного списка добавить другой список) - C++
здравствуйте, подскажите пожалуйста, как в конец двусвязного списка добавить другой список?

Составить двусвязный список на основе класса, объекты которого будут формировать этот список - C++
Составить двусвязный список на основе класса, объекты которого будут формировать этот список. В описание класса должны входить данные для...

Создать двусвязный список групп факультета, где каждая группа представляет собой односвязный список студентов - C++
Задание: создайте двусвязный список групп факультета. Каждая группа представляет собой односвязный список студентов. Помогите пожалуйста,...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru