单链表的操作(C#)

 public class LinkList
    {
        public int data;
        public LinkList next;
        public void Create(ref LinkList L)
        {
            L = new LinkList();
            LinkList q = L;
            L.next = null;
            Console.WriteLine("请输入单链表元素:");
            string s= " ";
            for (int i = 0; i <= 4; i++)
            {
                LinkList p = new LinkList();
                s = Console.ReadLine();
                p.data = Int32.Parse(s);
                p.next = q.next;
                q.next = p;
                q = q.next;
            }
        }

        public void Print(LinkList L)
        {
            LinkList p;
            p = L.next;
            while (p != null)
            {
                Console.Write(" "+ p.data);
                p = p.next;
            }
        }
        public void Empty(LinkList L)
           {
          if(L.next!=null)  Console.WriteLine ("链表非空");
          else Console.WriteLine ("链表为空表");
           }//判断单链表是不是空表

       public void Clear(LinkList L)
         {
         L.next =null;
          }//将单链表置空

       public void GetElem(LinkList L,int i,ref int e)
         {
        LinkList p=L.next;
        int j=1;//计数器
        while(p!=null&&j<i)
         {
       p=p.next;
       j++;
         }
       if(p==null||j>i) Console.WriteLine("error");//第i个元素不存在
       e=p.data;//取第i个元素
         }//取单链表中第i个元素


     public void Delete( ref LinkList L,int i,ref int e)
      {
     LinkList p=L;
     int j=0;//计数器
     while ((p.next!=null)&&j<i-1)
      {
     p=p.next;
           j = j + 1;
      }
   if((p.next==null)||(j>i-1)) Console.WriteLine("error1");
   LinkList q=p.next;
   p.next=q.next;
   e=q.data;//存储删除的元素
  
     }//删除单链表中第i个元素

    public void Insert(ref LinkList L,int i,int e)
     {
    LinkList p=L;
    int j=0;
    while((p!=null)&&(j<i-1))
     {
    p=p.next;
    j++;
     }
    if(p==null||j>i-1) Console.WriteLine("error2");
    LinkList s=new LinkList();
    s.data=e;
    s.next =p.next ;
    p.next =s;
     }//在单链表的第i个元素前插入e


   public int Length(LinkList L)
    {
    int j=0;//用来记录单链表中元素个数
    LinkList p=L;
    while (p.next!=null)
     {
    p=p.next;
    j++;
     }
       return j;
    }//求单链表中元素个数

}

 


    class Program
    {
        static void Main(string[] args)
        {
             int a=0;//用来存储所取元素
             int b=0;//用来存储被删除的元素
             int c=0;//用来记录单链表长度
            LinkList La = new LinkList();
            La.Create(ref La);
            La.Print(La);
            Console.WriteLine();
            La.GetElem(La, 3, ref a);
            La.Delete(ref La, 4, ref b);
            La.Insert(ref La, 1, 99);
            c=La.Length(La);
            La.Print(La);
            Console.WriteLine();
            Console.WriteLine("a=" + a + " b=" + b + " c=" + c);
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值