n个结点链结成一个链表,即为线性表的链式存储结构,因为此链表的,所以叫做。
存储元素信息的域
存储的域,指针域中存储的信息称作。
由和。
链表中的;
与的
b. 头结点链表的。
:
(1)C#实现单链表的类
class LinkList<T>
{
private Node<T> head;//头指针
public Node<T> Head { get { return head; } set { head = value; } }
public LinkList()
{
head = null;
}
public int GetLength()
{
int len = 0;
Node<T> p = head;
while (p != null)
{
p = p.Next;
len++;
}
return len;
}
public void Clear()
{
head = null;
}
public void Addend(T item)
{
Node<T> q = new Node<T>(item);
Node<T> p = new Node<T>();
if (head == null)
{
head = q;
return;
}
p = head;
while (p.Next != null)
{
p = p.Next;
}
p.Next = q;
}
public T GetItem(int i)
{
int j = 1; //计数器
Node<T> p = new Node<T>(); //声明一个指针p
p = head; //p指向链表的第一个节点
while (p != null && j < i) //如果p不为空,且j<i,那么循环就继续
{
p = p.Next; //让p指向下一个节点
++j;
}
if (p == null || j > i) //如果P为空或者j>i则显示错误
{
Console.WriteLine("节点不存在");
}
T value = p.Data;
return value;
}
public void Insert(int i, T value)
{
int j = 1;
Node<T> q = new Node<T>();
q = head;
//寻找i的位置
while (q != null && q.Next!=null && j < i)
{
q = q.Next;
++j;
}
if (q == null || j > i)
{
Console.WriteLine("节点不存在");
}
Node<T> n = new Node<T>();
n.Data = value;
n.Next = q.Next;
q.Next = n;
}
public void Delete(int i)
{
Node<T> p = new Node<T>(); //声明一个指针p
p = head; //p指向链表的第一个节点
int j = 1;
while (p.Next!=null&&j < i)
{
p = p.Next;
++j;
}
if (p.Next == null || j > i)
{
Console.WriteLine("节点不存在");
}
Node<T> q = new Node<T>();
q = p.Next;
p.Next = q.Next;
}
}
class Node<T>
{
private T data; //数据域
private Node<T> next; //指针域
public T Data { get { return data; } set { data = value; } }
public Node<T> Next { get { return next; } set { next = value; } }
public Node()
{
data = default(T);
next = null;
}
public Node(T value)
{
data = value;
}
public Node(Node<T> p)
{
next = p;
}
public Node(T val, Node<T> p)
{
data = val;
next = p;
}
}
class Program
{
static void Main(string[] args)
{
LinkList<string> t = new LinkList<string>();
t.Addend("我是第一个");
t.Addend("我是第二个");
t.Addend("我是第三个");
t.Addend("我是第四个");
t.Insert(1, "我是新插入的第1个");
string m = t.GetItem(1);
Console.WriteLine("位置1的值:" + m);
int len= t.GetLength();
Console.WriteLine("开始长度:" + len);
t.Delete(2);
int len2 = t.GetLength();
Console.WriteLine("执行删除之后的长度:" + len2);
t.Clear();
int len3 = t.GetLength();
Console.WriteLine("执行清空之后的长度:" + len3);
Console.ReadLine();
}
}
:将单链表的的由改为,使整个单链表形成一个环。这种的链表成为
:如何出发,。
(2)循环链表与单链表的主要在与上。
(3)终端结点用表示
(1)双向链表是在单链表的每个结点中,再设置一个的。所以
(2) 再插入和删除时,需要改变两个变量。要,实行实现,实现。
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/qkl-jc/37889.html