改到最后为什么count不能用

#include
using namespace std;
typedef struct Dnode {
int data;
Dnode *prior,*next;
} dnode;
class list {
public:
list();
int length() const;
void insert(const int i,const int x);
void inverse_set();
void Print();
private:
int count;
dnode *head;
};
list::list() {
head=new dnode;
head->next=head;
head->prior=head;
}
int list::length()const {
return count;
}
int insert(const int i,const int x) {
dnode *p,*head;
int j;
p=head;
j=0;
if((i<1)||(i>count+1))
cout << 0<< endl;
while( j!=i-1)
p=p->next;
j++;
dnode *s=new dnode;
s->data=x;
s->next=p->next;
p->next->prior=s;
p->next=s;
s->prior=p;
count++;
return 1;
}
void list::inverse_set() {
int i;
dnode *p;
p=head->next;
dnode *s;
while(p->next!=head)
s=head->prior;
s->prior->next=head;
head->prior=s->prior;
insert(i,s->data);
}
void list::Print() {
int j=0;
dnode *p=head->next;
while(j<=count) {
cout <data<< endl;
p=p->next;
j++;
}
}
int main() {
list l;
for(int m=1; m<=10; m++) {
l.insert(m,m);
}
l.Print();
l.inverse_set();
l.Print();
}
$g++ -o main *.cpp
main.cpp: In function ‘int insert(int, int)’:
main.cpp:31:18: error: ‘count’ was not declared in this scope
if((i<1)||(i>count+1))

main.cpp:42:5: error: ‘count’ was not declared in this scope
count++;

#include
using namespace std;
typedef struct Dnode {
int data;
Dnode *prior,*next;
} dnode;
class list {
public:
list();
int length() const;
int insert(const int i,const int x);
void inverse_set();
void Print();
private:
int count;
dnode *head;
};
list::list() {
head=new dnode;
head->next=head;
head->prior=head;
count=0;
}
int list::length()const {
return count;
}
int list::insert(const int i,const int x) {
dnode *p,*head;
int j;
p=head;
j=0;
if((i<1)||(i>count+1))
cout << 0<< endl;
while( j!=i-1)
p=p->next;
j++;
dnode *s=new dnode;
s->data=x;
s->next=p->next;
p->next->prior=s;
p->next=s;
s->prior=p;
count++;
return 1;
}
void list::inverse_set() {
int i;
dnode *p;
p=head->next;
dnode *s;
while(p->next!=head)
s=head->prior;
s->prior->next=head;
head->prior=s->prior;
insert(i,s->data);
}
void list::Print() {
int j=0;
dnode *p=head->next;
while(j<=count) {
cout <data<< endl;
p=p->next;
j++;
}
}
int main() {
list l;
for(int m=1; m<=10; m++) {
l.insert(m,m);
}
l.Print();
l.inverse_set();
l.Print();
}

#include
using namespace std;
typedef struct Dnode {
int data;
Dnode *prior,*next;
} dnode;
class list {
public:
list();
int length() const;
int insert(const int i,const int x);
void inverse_set();
void Print();
private:
int count;
dnode *head;
};
list::list() {
head=new dnode;
head->next=head;
head->prior=head;
count=0;
}
int list::length()const {
return count;
}
int list::insert(const int i,const int x) {
dnode *p,*head;
int j;
p=head;
j=0;
if((i<1)||(i>count+1))
cout << 0<< endl;
while( j!=i-1)
p=p->next;
j++;
dnode *s=new dnode;
s->data=x;
s->next=p->next;
p->next->prior=s;
p->next=s;
s->prior=p;
count++;
return 1;
}
void list::inverse_set() {
int i;
dnode *p;
p=head->next;
dnode *s;
while(p->next!=head)
s=head->prior;
s->prior->next=head;
head->prior=s->prior;
insert(i,s->data);
}
void list::Print() {
int j=0;
dnode *p=head->next;
while(j<=count) {
cout <data<< endl;
p=p->next;
j++;
}
}
int main() {
list l;
for(int m=1; m<=10; m++) {
l.insert(m,m);
}
l.Print();
l.inverse_set();
l.Print();
}

int insert(const int i,const int x) {那行
改为
int list::insert(const int i,const int x) {

修改处见注释,供参考:

#include<iostream>
using namespace std;
typedef struct Dnode {
    int   data;
    Dnode *prior,*next;
} dnode;
class list {
public:
    list();
    int  length() const;
    void insert(const int i,const int x);
    void inverse_set();
    void Print();
private:
    int   count;
    dnode *head;
};
list::list() {
     head=new dnode;
     head->next=head;
     head->prior=head;
     count = 0;  //修改
}
int list::length()const {
     return count;
}
void list::insert(const int i,const int x) { //int insert(const int i,const int x)
     dnode *p;  //,*head;  修改
     int j;
     p=head;
     j=0;
     if(i < 1 || i > count+1){//修改
        cout << 0<< endl;
        return; //修改
     } //修改
     while( j!=i-1){ //修改
        p=p->next;
        j++;
     }               //修改
     dnode *s=new dnode;
     s->data=x;
     s->next=p->next;
     p->next->prior=s;
     p->next=s;
     s->prior=p;
     count++;
     return;  //return 1;
}
void list::inverse_set() {//反序输出
     int i; //i 没有初始化
     dnode *p;
     p=head->prior; //p=head->next;
     dnode *s;
     while(p != head){
          cout << p->data << endl;
          p = p->prior;
     }
     //s=head->prior;
     //s->prior->next=head;
     //head->prior=s->prior;
     //insert(i,s->data);
}
void list::Print() {
     int j=0;
     dnode *p=head->next;
     while(j < count) {         //while(j<=count) 修改
          cout <<p->data<< endl;//cout <data<< endl; 修改
          p=p->next;
          j++;
     }
}
int main() {
     list l;
     for(int m=1; m<=10; m++) {
         l.insert(m,m);
     }
     l.Print();
     printf("链表长度:%d\n",l.length()); //修改
     l.inverse_set();
     //l.Print();
     return 0;
}