构造函数和析构函数

本文通过实例展示了如何使用C++实现链表的基本操作,包括链表的初始化、添加节点、遍历输出及销毁等过程。特别介绍了C++中构造函数和析构函数的应用,并比较了相对于C语言的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c++语言之前有学过一些,很久时间没用语法忘得差不多了,我准备重拾c++,,尽管现在还带有不少c的风格,但写博客是为了备忘,也给日后的学习做一个参考,以链表为例,运用c++中的构造函数对链表进行初始化,析构函数来销毁链表,特别是在对象很多的时候,比如要定义多个链表对象,c++相比c就有了很大优越性。

#include<iostream>
using namespace std;
typedef int DATA;
struct LNode{//结点类
        DATA data;                  
        LNode *next;    
};
struct List{//链表类
        LNode *head;                 //头指针
        List()                      
        {//构造函数
          head = NULL;               //空链表
        }

        ~List()                      
        {//析构函数
           LNode* p = head,*p1;
           while(p)
           {
               p1 = p;
               p = p->next;
               delete p;
           }
           cout << "链表已销毁" << endl; 
        }

        void AddNode(int d)       
        {//添加结点
           LNode *p = new LNode;
           p->data = d;
           p->next = head;          //头插法
           head = p;
        }
        void print()             
        {//遍历输出链表 
          LNode *p = head;
          while(p)
          {
            cout << p->data << " ";
            p = p->next;
          }
          cout << endl;
        }
        int GetCount()
        {
          LNode *p = head;
          int i = 0;
          while(p)
          {
              ++i;
              p = p->next;
          }
          return i;
        }
};

int main()
{
    List l1,l2;            //定义两个链表对象,系统已自动调用构造函数将其初始化
    int i;
    for(i=0; i<10; i++) 
    {
        l1.AddNode(i);
    }
    for(i=10; i<20; i++) 
    {
        l2.AddNode(i);
    }
    cout << "list1: ";
    l1.print();
    cout << "list2: ";
    l2.print();
    cout << "list1-Length = " << l1.GetCount() << endl;
    cout << "list2-Length = " << l2.GetCount() << endl;

    return 0;                                       //结束时系统自动调用析构函数将两链表对象销毁
}                                           
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值