VC++2012编程演练数据结构《13》单链表

本文介绍了如何在VC++2012环境下进行单链表的编程演练,包括创建工程、声明单链表类、实现类以及展示操作效果。还提供了单链表代码的下载链接。
摘要由CSDN通过智能技术生成
单链表简介


    用一组地址任意的存储单元存放线性表中的数据元素。
  以元素(数据元素的映象)
  + 指针(指示后继元素存储位置)
  = 结点
  (表示数据元素 或 数据元素的映象)
  以“结点的序列”表示线性表
  ?? 称作线性链表(单链表)
  单链表是一种链式存取的结构,为找第 i 个数据元素,必须先找到第 i-1 个数据元素。
  因此,查找第 i 个数据元素的基本操作为:移动指针,比较 j 和 i
  单链表
  1、链接存储方法
  链接方式存储的线性表简称为链表(Linked List)。
  链表的具体存储表示为:
  ① 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不连续的)
  ② 链表中结点的逻辑次序和物理次序不一定相同。为了能正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其后继结点的地址(或位置)信息(称为指针(pointer)或链(link))
  注意:
  链式存储是最常用的存储方式之一,它不仅可用来表示线性表,而且可用来表示各种非线性的数据结构。
  2、链表的结点结构
  ┌───┬───┐
  │data │next │
  └───┴───┘
  data域--存放结点值的数据域
  next域--存放结点的直接后继的地址(位置)的指针域(链域)
  注意:
  ①链表通过每个结点的链域将线性表的n个结点按其逻辑顺序链接在一起的。
  ②每个结点只有一个链域的链表称为单链表(Single Linked List)。
  【例】线性表(bat,cat,eat,fat,hat,jat,lat,mat)的单链表示如示意图
  3、头指针head和终端结点指针域的表示
  单链表中每个结点的存储地址是存放在其前趋结点next域中,而开始结点无前趋,故应设头指针head指向开始结点。
  注意:
  链表由头指针唯一确定,单链表可以用头指针的名字来命名。
  【例】头指针名是head的链表可称为表head。
  终端结点无后继,故终端结点的指针域为空,即NULL。
  4、单链表的一般图示法
  由于我们常常只注重结点间的逻辑顺序,不关心每个结点的实际位置,可以用箭头来表示链域中的指针,线性表(bat,cat,fat,hat,jat,lat,mat)的单链表就可以表示为下图形式。
  5、单链表类型描述
  typedef char DataType; //假设结点的数据域类型为字符
  typedef struct node{ //结点类型定义
  DataType data; //结点的数据域
  struct node *next;//结点的指针域
  }ListNode;
  typedef ListNode *LinkList;
  ListNode *p;
  LinkList head;
  注意:
  ①*LinkList和ListNode是不同名字的同一个指针类型(命名的不同是为了概念上更明确)
  ②*LinkList类型的指针变量head表示它是单链表的头指针
  ③ListNode类型的指针变量p表示它是指向某一结点的指针
  6、指针变量和结点变量
  
指针变量 结点变量
定义 在变量说明部分显式定义 在程序执行时,通过标准函数malloc生成
取值 非空时,存放某类型结点 实际存放结点各域内容的地址
操作方式 通过指针变量名访问
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尹成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值