注册 登录
编程论坛 C++教室

链表的类

joyparkko 发布于 2013-09-26 22:55, 507 次点击
大家看一下这个链表的类,为什么在构造函数中head = NULL,不是head -> next = NULL。如果用第二种的话会报错。
head只是一个指针,它为空表示它内部成员指针 next也为空吗?
class LinkedList {
public:
 struct Node {
   int val;
   Node* next;
   Node(int v, Node* n) { val = v; next = n; }
 };
private:
 Node* head;

public:
 LinkedList() {
     head = NULL;
 }
 ~LinkedList() {
     Node* q;
     for (Node* p = head; p != NULL; p=q) {
          q=p->next;
         delete[] p;
     }
 }

 void addFirst(int v) {
     Node* p = new Node(v, head);
     p->val = v;
     p->next = head;
     head = p;
 }
 void addLast(int v) {
   Node* p;
   Node* q;
   if (head == NULL) {
     head = new Node(v, NULL);
     return;
   }
   for (p = head; p != NULL; q=p, p = p->next){}
     
   q->next = new Node(v, NULL);
 }

 void remove(Node* p) {
     Node* q;
     for (q = head; q != NULL; q=q->next)
         if (q->next == p) {
             q->next = p->next;
             return;
     }
 }
 Node* getFirst() {
   return head;
 }
 Node* getLast() {
   Node* p;
   Node* q;
   for (p = head; p != NULL; q=p, p = p->next);
   return q;
 }
};
5 回复
#2
peach54602013-09-27 08:24
怎么说呢,你再好好理解理解
我感觉你没看懂这个程序

尝试自己调试一下...
#3
qunxingw2013-09-28 15:54
要看是否有头结点
#4
mskeheng2013-09-28 19:54
只有本站会员才能查看附件,请 登录
这个类的类成员貌似没有head->next吧,我们先初始化成员head,而且看下面的函数head节点也是要存储数据的。感觉这个类不好访问数据val,我写了一个简单的主函数。。。
#5
lzj125302013-09-29 09:49
head并不是结构体变量而是结构体指针变量~
#6
sunny孙2013-09-29 10:53
head是定义了的结构体指针类型的变量,只是一个指针变量,没有开辟结构体变量空间,根本不存在head->next部分
1