C++中的链表节点通常情况下类型都是一致的.因此我们可以用模板来实现.

#include <iostream>
using namespace std; template<typename Type>//定义一个模板类必须有的声明
class LinkNode //表示链表节点的类
{
public:
LinkNode() :m_pnext(nullptr){}//构造函数,在函数体内实现的相当于默认在前面加了inline关键字修饰
LinkNode(Type item, LinkNode* next=nullptr) :m_data(item), m_pnext(next){}//带默认参数的构造函数
~LinkNode(){ m_pnext = nullptr;} Type getData(){ return m_data; }//注意返回值类型,必须写上Type,要明确 friend ostream& operator<<(ostream& out, LinkNode& node)//友元函数重载操作符,可以在类里面实现,也可以在类外面实现,
{
out << node.m_data;
return out;
} //friend ostream& operator<< <Type>(ostream& out, LinkNode& node)//在类外面实现友元函数,用于操作符重载时,必须明确类型,即<Type>不能少,否则报错 private:
Type m_data;
LinkNode* m_pnext;//所有的LinkeNode后面都可以省略<Type>,因为这在一开始的类前面就定义了LinkeNode为模板类,默认就是和上面的类型一致
}; //template<typename Type>
//ostream& operator<<(ostream& out, LinkNode<Type>& node)//在类的外边实现友元函数,注意在类里面声明时,需要明确类型operator<< <Type>(),否则报错
//{
// out << node.m_data;
// return out;
//} int main()
{
LinkNode<int> c;
LinkNode<int> a(,&c);
cout << "a.m_data= "<<a << endl; system("pause");
return ;
}

2.如果不用类模板,就可以很简单了,比如我们用int类型:

#include <iostream>
using namespace std; struct LinkNode{
public:
LinkNode() :m_pnext(nullptr), m_data(){}//用成员列表的方式来初始化构造函数,效率比在构造函数里面初始化高,m_data可以不用初始化,系统默认为0,但为了保险可以显示的初始化为0
LinkNode(int num, LinkNode* next = nullptr) :m_data(num), m_pnext(next){}//带默认参数的构造函数
~LinkNode(){ m_pnext = nullptr; } int getData(){ return m_data; } friend ostream& operator<<(ostream& out, LinkNode& node);//友元函数,重载操作符,写在类里面和类外面都没有区别,没有模板那么麻烦,也不需要明确类型
/*friend ostream& operator<<(ostream& out, LinkNode& node)
{
return out << node.m_data;
}*/ private:
int m_data;//数据域,明确为int
LinkNode* m_pnext;//指针域 }; ostream& operator<<(ostream& out, LinkNode& node)
{
return out << node.m_data;
} int main()
{
LinkNode c;
//LinkNode b();//报错,没有与之对应的构造函数,要么写b(3),或者b(3,&c),要么省略()
LinkNode a(,&c);
cout <<"a.m_data= " << a << endl; system("pause");
return ;
}

C++中的链表节点用模板类和用普通类来实现的区别的更多相关文章

  1. Android代码优化----Application节点的模板写法及UI工具类

    一. MyApplication类的编写: 新建一个类MyApplication,继承自Application.代码如下: MyApplication.java: package com.smyhva ...

  2. linux内核中的链表

    1.内核中的链表 linux内核链表与众不同,他不是把将数据结构塞入链表,而是将链表节点塞入数据,在2.1内核中引入了官方链表,从此内核中所有的链表使用都采用此链表,千万不要在重复造车轮子了!链表实现 ...

  3. javascript中在链表中向前(向后)移动n个节点

     1.概念 在链表上移动n个节点,我第一眼看到这个需求的时候首先想到的是当前节点.使用这个当前节点作为参考来移动,没有这个当前节点的话是没有办法在链表上前进和后退的.初始化定义链表的时候定义一个当前节 ...

  4. 【IT笔试面试题整理】删除无序链表中重复的节点

    [试题描述]定义一个函数,输入一个链表,删除无序链表中重复的节点 [参考代码] 方法一: Without a buffer, we can iterate with two pointers: &qu ...

  5. 【剑指offer】删除链表中重复的节点,C++实现(链表)

    0.简介       本文是牛客网<剑指offer>笔记. 1.题目 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针.例如,链表1-> ...

  6. php实现删除链表中重复的节点

    php实现删除链表中重复的节点 一.总结 二.php实现删除链表中重复的节点 题目描述: 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1 ...

  7. 剑指offer-面试题18-删除链表中重复的节点-链表

    /* 题目: 删除链表中重复的节点 */ /* 思路: 1.声明一个头节点head,即使首元节点被删除,也可返回head->next 2.声明两个指针, 一个指针qNode指向确定不会删除的链表 ...

  8. LeetCode 83. Remove Duplicates from Sorted List(从有序链表中删除重复节点)

    题意:从有序链表中删除重复节点. /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode ...

  9. 标准模板库中的链表(list)

    //C++数据结构与算法(第4版) Adam Drozdek 著  徐丹  吴伟敏<<清华大学出版社>> 头文件:include<list> list() 创建一个 ...

随机推荐

  1. 搭建Android手机系统开发环境(转)

    Android作为近来表现十分强劲的手机操作系统,越来越受到开发人员的青睐,本篇文章将带领大家从零开始打造属于自己的开发环境. 一.JDK下载安装 JDK全称是Java Development Kit ...

  2. 关于hbase的read操作的深入研究 region到storefile过程

    这里面说的read既包括get,也包括scan,实际底层来看这两个操作也是一样的.我们将要讨论的是,当我们从一张表读取数据的时候hbase到底是怎么处理的.分二种情况来看,第一种就是表刚创建,所有pu ...

  3. 十、Struts2结果集

      十.Struts2结果集                         1.Struts.xml配置文件 result元素:指定动作类的动作方法执行完后的结果视图. 属性: name:字符串,与 ...

  4. 【SMS】移动短信网关返回信息状态代码说明【China Mobile】

    1 由SMSC返回的一般结果状态报告 含义 说明 处理建议DELIVRD 消息发送成功 用户成功接收到短信 ??EXPIRED 因为用户长时间关机或者不在服务区等导致的短消息超时没有递交到用户手机上 ...

  5. Html辅助方法(分页、下拉框)

    引用命名空间: using System.Text; using System.Web.Mvc; Html分页方法 #region 分页Html辅助方法 /// <summary> /// ...

  6. luigi学习1

    一.luigi介绍 luigi是基于python语言的,可帮助建立复杂流式批处理任务管理系统.这些批处理作业典型的有hadoop job,数据库数据的导入与导出,或者是机器学习算法等等. luigi的 ...

  7. 添加TextView隐藏进度条的方法

    在TextView中添加 android:scrollbars="vertical" android:singleLine="false" 在Activity代 ...

  8. Source not found The JAR file …has no source attachment.

    问题描述如下: 解决方案: 选中你的项目方案,然后鼠标右键选择属性Properties,如下图: 然后依次按下图操作就完成了.

  9. 清理sql2000查询分析器登录名记录

    注册表 HKEY_CURRENT_USER/Software/Microsoft/Microsoft  SQL  Server/80/Tools/Client/PrefServers

  10. Jquery权威指南

    1.Radio <input id="Radio1" name="rdoSex" type="radio" value="男 ...