correct the error

1
2
3
4
5
6
7
int len (IntSLList *ptr)
{
    if (ptr!=0)
    return len(ptr->next)+1;
    else
    return 0;
}


in this code there is error says that class has no member named next
even if i put int len (IntSLList *ptr, int next)
idk why any help?
what class?
IntSLList
i meant i can't see yout class :D

just post the code of intSLList
List.h
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
class IntSLLNode {
public:
    int info;
    IntSLLNode *next;
    IntSLLNode(int el, IntSLLNode *ptr = 0) {
        info = el; next = ptr;
    }
};

class IntSLList {
public:
int length();
    IntSLList() {
        head = tail = 0;  // or head = tail = NULL;  NULL is equivalent to 0
    }
    ~IntSLList();
    int isEmpty() {
        return head == 0;
    }
    void addToHead(int);
    void addToTail(int);
    int  deleteFromHead();
    int  deleteFromTail();
    void deleteNode(int);
    bool isInList(int) const;
    void printAll() const;
private:
    IntSLLNode *head, *tail;
};

List.cpp
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
#include <iostream>
#include "List.h"

using namespace std;
/******addToHead******/
void IntSLList::addToHead(int el) {
    head = new IntSLLNode(el,head);
    if (tail == 0)  //empty list
       tail = head;
}
/******addToTail******/
void IntSLList::addToTail(int el) {
    if (tail != 0) {      // if list not empty;
         tail->next = new IntSLLNode(el);
         tail = tail->next;
    }
    else
	     head = tail = new IntSLLNode(el);
}
/******deleteFromHead******/
int IntSLList::deleteFromHead() {
    int el = head->info;  // causes crash if list empty
    IntSLLNode *tmp = head;
    if (head == tail)     // if only one node on the list
         head = tail = 0;
    else
         head = head->next;
    delete tmp;
    return el;
}
/******deleteFromTail******/
int IntSLList::deleteFromTail() {
    int el = tail->info; // causes crash if list is empty
    if (head == tail) {   // if only one node on the list
         delete head;
         head = tail = 0;
    }
    else {                // if more than one node in the list
         IntSLLNode *tmp; // find the predecessor of tail
         for (tmp = head; tmp->next != tail; tmp = tmp->next);
         delete tail;
         tail = tmp;      // the predecessor of tail becomes tail
         tail->next = 0;
    }
    return el;
}
/******deleteNode******/
void IntSLList::deleteNode(int el) {
    if (head != 0)                     // if non-empty list;
         {if (head == tail && el == head->info) { // if only one
              delete head;                       // node on the list;
              head = tail = 0;
         }
         else if (el == head->info) {  // if more than one node on the list
              IntSLLNode *tmp = head;
              head = head->next;
              delete tmp;              // and old head is deleted;
         }
         else {                        // if more than one node in the list
              IntSLLNode *pred, *tmp;
              for (pred = head, tmp = head->next; // and a non-head node
                   tmp != 0 && !(tmp->info == el);// is deleted;
                   pred = pred->next, tmp = tmp->next);
              if (tmp != 0) {
                   pred->next = tmp->next;
                   if (tmp == tail)
                      tail = pred;
                   delete tmp;
              }
         }
}}
/******printAll******/
void IntSLList::printAll() const {
    for (IntSLLNode *tmp = head; tmp != 0; tmp = tmp->next)
        cout << tmp->info << " ";
   cout << endl;
}
/******isInList******/
bool IntSLList::isInList(int el) const {
    IntSLLNode *tmp;
    for (tmp = head; tmp != 0 && !(tmp->info == el); tmp = tmp->next);
    return tmp != 0;
}
/******destructor******/
IntSLList::~IntSLList() {
    for (IntSLLNode *p; !isEmpty(); ) {
        p = head->next;
        delete head;
        head = p;
    }
}

/******Length******/
int len (IntSLList *ptr)
{
    if (ptr!=0)
    return len(ptr->next)+1;
    else
    return 0;
}
/*
int IntSLList::length(){
    int count=0;
    IntSLLNode* tmp;
    for(tmp=head;tmp!=0;tmp=tmp->next)
        count++;
    return count;

}
*/

//here you should define len() function

//int IntSLList::length()
  //  len(head);

Your list does not have a `next' (¿what would that mean?)
Nodes have next
thanku
Topic archived. No new replies allowed.