zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C#实现单链表的定义、插入、删除、查找

c# 实现 删除 定义 查找 插入 单链
2023-09-27 14:22:14 时间

本文介绍C#实现单链表数据结构的定义、插入、删除、查找
1、单链表的定义
///
/// 节点类
///
///
public class ListNode {
//节点值
public int Value;
//前一个节点
public ListNode Previous;
//后一个节点
public ListNode Next;
}
2、单链表头插入法
///
/// 单链表插入–头插入法
///
///
///
public static ListNode CreatList1(ref ListNode L,int e) {
//每次均在头节点之后插入元素
ListNode s = new ListNode();
s.Value = e;
s.Next = null;
if (L == null)
{
L = s;
L.Next = null;
}
else {
s.Next = L.Next;
L.Next = s;
}
return L;
}
3、单链表的尾插入法
///
/// 单链表插入—尾插法
///
///
public static ListNode CreatList2(ref ListNode L, ref ListNode real,int e) {
ListNode s = new ListNode();
s.Value = e;
s.Next = null;
if (L == null) {
L = s;
real = s;
real.Next = null;
}else
{
real.Next = s;
real = s;
}
return L;
}
4、单链表的按序号查找节点值
///
/// 按序号查找节点值
///
///
///
public static ListNode GetElem(ListNode L,int i) {
int j = 1;
ListNode p = L.Next;
if (i == 0)
return L;
if (i < 1)
return null;
while (p != null && j < i) {
p = p.Next;
j++;
}
return p;
}
5、单链表按值查找节点
///
/// 按值查找节点
///
///
public static ListNode GetElem2(ListNode L, int e) {
ListNode p = L;
while (p!=null&&p.Value!=e) {
p = p.Next;
}
return p;
}
6、实际测试的Main函数
static void Main(string[] args)
{
//测试链表的构造
ListNode L = null;
ListNode real = null;
int i=0;
int x=0;
while (x!=999) {
Console.WriteLine(“请输入一个数字(999结束):”);
x = int.Parse(Console.ReadLine());//字符转为整型

            if (x!=999) {
                CreatList2(ref L,ref real, x);
            } 
        }
        //按序号查找结点值
        while (i != 999) {
        Console.WriteLine("请输入序号查找节点:");
        i = int.Parse(Console.ReadLine());//字符转为整型
            Console.WriteLine("序号i的值:"+ GetElem(L, i).Value);    
        }
        Console.ReadLine();
    }
}