链表--笔记--数据结构(C++版)王红梅--自我思路整理与梳理
看到这篇文的很多人大概都知道链表是个什么玩意了。简单说就是一个又一个的指针,指针之间用指针连接起来。
本文的阅读 适合有c++基础的人群
以下:
这叫做一个结点。

这就是一个链表。我们主要使用的是第一个结点上面没有数据,后面的结点有数据的链表。(别管为什么了,快试试吧。其实就是为了操作方便且统一)
由于不知道链表里面的数据类型,因此我们用C++中的模板。
template <class T>
struct Node{
T data;//数据域中的数据
Node<T> *pnext;//指针域 用来指向下一个结点
};
我们把链表的实现封装成一个类,然后我们一个一个的来实现它。
template<class T>
class LinkList{
public:
LinkList();//建立不带数据的头结点
LinkList(T a[],int n);//建立头结点+把数组中的值变成链表中的值,建立一个单链表
~LinkList();//析构函数 把链表中的结点一个个释放
void PrintList();//遍历单链表
int Length();//求单链表的长度 并返回单链表的长度(有数据的结点个数)
T Get(int i);//返回第i个有数据结点的值
int Locate(T x);//返回数据域是x的那个结点的位置
void Insert(int i,T x);//在第i个结点处,插入数据域为x的另一个节点
T Delete(int i);//删除第i个结点,返回被删除结点的值
private:
Node<T> *head;//头结点
};
下面是类方法的实现:
template<class T>
LinkList<T>::LinkList() {
head=new Node<T>;
head->pnext=NULL;
}
单链表的最后一个结点一定要指向NULL。由于这个是头结点,所以指向NULL。
链表--笔记--数据结构(C++版)王红梅--自我思路整理与梳理的更多相关文章
- 《Java学习笔记(第8版)》学习指导
		
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
 - Day 2 笔记 数据结构
		
Day 2 笔记 数据结构 1.栈.队列.链表等数据结构都是线性数据结构 2.树状数据结构:二叉堆,线段树,树状数组,并查集,st表... 优先队列其实与二叉堆的存储方式并不相同. 一.二叉堆 1.二 ...
 - 数据结构——基于java的链表实现(真正理解链表这种数据结构)
		
原创不易,如需转载,请注明出处https://www.cnblogs.com/baixianlong/p/10759599.html,否则将追究法律责任!!! 一.链表介绍 1.什么是链表? 链表是一 ...
 - 详细分析链表的数据结构的实现过程(Java 实现)
		
目录 链表的数据结构的实现过程(Java 实现) 前言 基本概念 链表的基本结构 链表的基本操作的实现 在链表中添加元素 在链表头添加元素 在链表指定位置处添加元素 链表的虚拟头节点 链表的查询和修改 ...
 - [转]机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)
		
机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理) 转自http://www.cnblogs.com/tornadomeet/p/3395593.html 前言: 找工作时(I ...
 - 数据结构:栈 顺序表方法和单链表方法(python版)
		
#!/usr/bin/env python # -*- coding:utf-8 -*- class StackUnderflow(ValueError): pass #链表节点 class Node ...
 - jdk链表笔记
		
LinkedList LinkedList是双链表,并且有头尾指针 数据结构 public class LinkedList extends AbstractSequentialList implem ...
 - JAVA学习笔记 -- 数据结构
		
一.数据结构的接口 在Java中全部类的鼻祖是Object类,可是全部有关数据结构处理的鼻祖就是Collection和Iterator接口,也就是集合与遍历. 1.Collection接口 Colle ...
 - 学生信息管理系统-顺序表&&链表(数据结构第一次作业)
		
实验目的 : 1 .掌握线性表的定义: 2 .掌握线性表的基本操作,如建立.查找.插入和删除等. 实验内容: 定义一个包含学生信息(学号,姓名,成绩)的的 顺序表和链表,使其具有如下功能: (1) 根 ...
 
随机推荐
- 【CUDA 基础】2.4 设备信息
			
title: [CUDA 基础]2.4 设备信息 categories: CUDA Freshman tags: CUDA Device Information toc: true date: 201 ...
 - (Java多线程系列二)线程间同步
			
Java多线程间同步 1.什么是线程安全 通过一个案例了解线程安全 案例:需求现在有100张火车票,有两个窗口同时抢火车票,请使用多线程模拟抢票效果. 先来看一个线程不安全的例子 class Sell ...
 - 修改 Idea 终端 Terminal 为 GitBash
			
Terminal "C:\Program Files\Git\bin\sh.exe" -login -i
 - 「CF525D」Arthur and Walls
			
题目链接 戳我 \(Solution\) 如果一个#要更改,那么一个四个格子的正方形只有他一个是#,bfs弄一下就好了 \(Code\) #include<bits/stdc++.h> u ...
 - C++入门经典-例6.22-字符串与数组,string类型的数组
			
1:数组中存储的数据也可以是string类型的.代码如下: // 6.22.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include ...
 - Windows下设置U盘自动复制文件到本地
			
一.打开记事本,把下面的代码复制进去 set fso=createobject("scripting.filesystemobject") set ws=createobject( ...
 - compare across commits online
			
https://gist.github.com/nevik/5689882 Examples: https://github.com/octocat/Spoon-Knife/compare/ed122 ...
 - PHP中try catch的用法
			
异常(Exception)用于在指定的错误发生时改变脚本的正常流程. 什么是异常? PHP 5 提供了一种新的面向对象的错误处理方法. 异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程.这 ...
 - 微服务一键启动脚本shell带有环境变量的
			
etting####################################################### #程序代码数组APPS=(cAssistantbussiness cAssi ...
 - 转:extjs 添加loading状态的三种解决办法:
			
extjs 添加loading状态的三种解决办法: 方法一: //materialGrid 指需要显示loading状态的控件id var o=Ext.getCmp('materialGrid'); ...