博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第三章单链表(带有头结点的尾插法实现)
阅读量:6675 次
发布时间:2019-06-25

本文共 4225 字,大约阅读时间需要 14 分钟。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

///     /// 节点类    ///     /// 

在这里插入代码片

class Node
{ private T date; //数据域 private Node
next;//指针域 public T Date { get => date; set => date = value; } internal Node
Next { get => next; set => next = value; } public Node() { Next = null; Date = default(T); } public Node(T date,Node
next) { this.Date = date; this.Next = next; } public Node(T date) { Next = null; this.Date = date; } public Node(Node
next) { this.Date = default(T); this.Next = next; } }
///     /// 链表类    ///     class LinkList
{ private Node
head; //头指针 private int count; //链表元素个数 public LinkList() { head=new Node
();//指向头结点 count = 0; } //尾插法创建链表 public LinkList(params T[] list):this() { Node
last = head; for (int i = 0; i < list.Length; i++) { Node
newNode = new Node
(list[i]); last.Next = newNode; last = last.Next; } count = list.Length; } //遍历单链表的元素 public void Traverse() { Node
temp = head; for (int i = 0; i < count; i++) { temp = temp.Next; Console.Write(temp.Date+" "); } Console.WriteLine(); }

在这里插入代码片

//判断是否为空        public bool IsEmepty()        {            return head.Next == null;        }        //获取链表长度        public int GetLength()        {            return count;        }

在这里插入代码片

在这里插入图片描述

//获取元素索引位置        public int Index(T elem)        {            Node
temp = head; for (int i = 0; i < count; i++) { temp = temp.Next; if (temp.Date.Equals(elem)) { return i; } } Console.WriteLine("elem:{0}不在链表中", elem); return -1; }

在这里插入代码片

在这里插入图片描述

//通过索引器获取元素        public T this[int index]        {            get            {                if (index>=count||index<0)                {                    throw new IndexOutOfRangeException();                }                Node
temp = head; for (int i = 0; i <=index; i++) { temp = temp.Next; } return temp.Date; } }

在这里插入代码片

//插入元素        public void Insert(int index,T elem)        {            Node
temp = head; Node
newNode=new Node
(elem,null); if (index >= count || index < 0) { throw new IndexOutOfRangeException(); } //当为空链表的时候 if (temp.Next == null) { temp.Next = newNode; count++; } else { for (int i = 0; i < index; i++) { temp = temp.Next; } newNode.Next = temp.Next; temp.Next = newNode; count++; } }

在这里插入代码片

//删除元素        public void Delete(int index)        {            Node
temp = head; if (head.Next == null) { Console.WriteLine("空表无法删除"); } if (index >= count || index < 0) { throw new IndexOutOfRangeException(); } for (int i = 0; i < index; i++) { temp = temp.Next; } temp.Next = temp.Next.Next; count--; } }
LinkList
sum=new LinkList
(1,2,5,8,5,888,555); sum.Traverse(); Console.WriteLine(sum.IsEmepty()); Console.WriteLine(sum.GetLength()); Console.WriteLine(sum.Index(8)); Console.WriteLine(sum[6]); //sum.Insert(2, 120); //sum.Traverse(); sum.Delete(100); sum.Traverse(); Console.ReadKey();

转载地址:http://vdrxo.baihongyu.com/

你可能感兴趣的文章
DNS服务(一)——DNS原理及其解析过程详解
查看>>
卸载linux软件总结
查看>>
redhat 6.5 安装和配置zabbix客户端
查看>>
硬链接和软链接(2)
查看>>
几种REST服务JAVA客户端类库
查看>>
什么是Hijax?Hijax的原理及优缺点介绍
查看>>
【2016-03-17】移动互联网时代,看好你的隐私
查看>>
linux命令:编译安装postfix邮件服务
查看>>
vi命令集
查看>>
oracle数据库克隆
查看>>
输出 pdf
查看>>
PHPCMS一个BUG
查看>>
APP云测试
查看>>
3-unit3 高速缓存DNS
查看>>
spark mllib 协同过滤算法,基于余弦相似度的用户相似度计算
查看>>
openwrt 基于qmi的 3G|4G拨号
查看>>
俞敏洪励志语
查看>>
开源|基于TensorFlow的聊天机器人-ErGo
查看>>
lucene4.0入门1
查看>>
Svn结合hook实现自动更新及多Project管理更新
查看>>