数据结构 第4讲 线性表-单链表.pptVIP

  • 16
  • 0
  • 约9.69千字
  • 约 46页
  • 2017-07-29 发布于浙江
  • 举报
数据结构 第4讲 线性表-单链表

单链表的实现——按位查找 操作接口: DataType Get(int i); first a1 a2 an ∧ ai p p 查找失败 1. 工作指针p初始化; 累加器count置1; 2. 重复执行下述操作,直到p为空并且count值小于i: 2.1 工作指针p后移; 2.2 count++; 3. 返回找到的第i个结点的元素值; p count =1 p count =2 p 查找成功 count =i 4、查找 template class DataType int LinkListDataType :: Get(int i) { p = first-next; count = 1; while (p != NULL counti) { p = p-next; count++; } if(p==NULL) throw “位置”; else return p-data; } 单链表的实现——按位查找 算法描述——C++描述 顺序存取结构: 在单链表中,即使知道被访问结点的位置,也不能像顺序表一样直接按序号访问,只能从头指针出发逐个往下搜索,这种存储结构也称为:顺序存取结构。 template class DataType int LinkListDataType :: Locate(DataType x) { p = first-next; count = 1; while (p != NULL) { if (p-data == x) return count; //查找成功,返回序号 p = p-next; count++; } return 0; //退出循环表明查找失败 } 单链表的实现——按值查找 算法描述——C++描述 操作接口: void Insert(int i, DataType x); 在单链表中第i(1=i=Length()+1)个结点之前插入一个数据域为x的结点。 如何实现结点ai-1、x和ai之间逻辑关系的变化? p x s first a1 ai-1 an ∧ ai 5、插入 注意分析边界情况——表头、表尾。 first a1 an ∧ ai p x s 算法描述: s=new NodeDataType; s-data=x; s-next=p-next; p-next=s; p x s ∧ 由于单链表带头结点,表头、表中、表尾三种情况的操作语句一致。 算法描述——伪代码 1. 工作指针p初始化; 2. 查找第i-1个结点并使工作指针p指向该结点; 3. 若查找不成功,则插入位置不合理,抛出插入位 置异常; 否则, 3.1 生成一个元素值为x的新结点s; 3.2 将新结点s插入到结点p之后; template class DataType void LinkListDataType :: Insert(int i, DataType x) { p = first ; count = 0; //工作指针p应指向头结点 while (p != NULL count i - 1) //查找第i – 1个结点 { p = p-next; count++; } if (p == NULL) throw 位置; //没有找到第i – 1个结点 else { s = new Node; s-data = x; //申请一个结点s s-next = p-next; p-next = s; //结点s插入结点p之后 } } 算法描述——C++描述 比较:不带头结点的单链表插入算法 操作接口: DataType Delete(int i); p 如何实现结点ai-1和ai之间逻辑关系的变化? first a1 ai-1 ai+1 ai 算法描述: q=p-next; x=q-data; p-next=q-next; delete q; q 6、删

文档评论(0)

1亿VIP精品文档

相关文档