亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#定義并實現(xiàn)單鏈表實例解析

 更新時間:2014年07月17日 14:40:12   投稿:shichen2014  
這篇文章主要介紹了C#定義并實現(xiàn)單鏈表實例解析,有助于讀者加深對C#實現(xiàn)數(shù)據(jù)結(jié)構(gòu)的理解,需要的朋友可以參考下

本文以實例詳細描述了C#定義并實現(xiàn)單鏈表的過程及原理。一般來說C#定義并實現(xiàn)單鏈表,代碼包括構(gòu)成鏈表的結(jié)點定義、用變量來實現(xiàn)表頭、清空整個鏈表 、鏈表復(fù)位,使第一個結(jié)點成為當(dāng)前結(jié)點、判斷鏈表是否為空、判斷當(dāng)前結(jié)點是否為最后一個結(jié)點、返回當(dāng)前結(jié)點的下一個結(jié)點的值,并使其成為當(dāng)前結(jié)點、將當(dāng)前結(jié)點移出鏈表,下一個結(jié)點成為當(dāng)前結(jié)點等內(nèi)容。

具體實現(xiàn)代碼如下所示:

using System;
using System.IO;
// 構(gòu)成鏈表的結(jié)點定義 
public class Node 
{
 public Object data;
 public Node next;
 public Node( Object d ) 
 {
 data = d;
 next = null;
 }
}
public class List 
{
 // 用變量來實現(xiàn)表頭
 private Node Head = null;
 private Node Tail = null;
 private Node Pointer = null;
 private int Length = 0;
 //清空整個鏈表 
 public void deleteAll( ) 
 {
 Head = null;
 Tail = null;
 Pointer = null;
 Length = 0;
 }
 //鏈表復(fù)位,使第一個結(jié)點 成為當(dāng)前結(jié)點
 public void reset( ) 
 {
 Pointer = null;
 }
 //判斷鏈表是否為空
 public bool isEmpty( ) 
 {
 return (Length == 0);
 }
 //判斷當(dāng)前結(jié)點是否 為最后一個結(jié)點
 public bool isEnd( ) 
 {
 if (Length == 0)
  throw new System.Exception( );
 else if (Length == 1)
  return true;
 else
  return (cursor( ) == Tail);
 }
 //返回當(dāng)前結(jié)點的下一個結(jié)點的值, 并使其成為當(dāng)前結(jié)點
 public Object nextNode( ) 
 {
 if (Length == 1)
  throw new System.Exception( );
 else if (Length == 0)
  throw new System.Exception( );
 else 
 {
  Node temp = cursor();
  Pointer = temp;
  if (temp != Tail)
  return (temp.next.data);
  else
  throw new System.Exception( );
 }
 }
 //返回當(dāng)前結(jié)點的值
 public Object currentNode( ) 
 {
 Node temp = cursor( );
 return temp.data;
 }
 //在當(dāng)前結(jié)點前插入一個結(jié)點, 并使其成為當(dāng)前結(jié)點
 public void insert( Object d ) 
 {
 Node e = new Node( d );
 if (Length == 0) 
 {
  Tail = e;
  Head = e;
 } 
 else 
 {
  Node temp = cursor( );
  e.next = temp;
  if (Pointer == null)
  Head = e;
  else
  Pointer.next = e;
 }
 Length++;
 }
 //返回鏈表的大小
 public int size( ) 
 {
 return Length;
 }
 //將當(dāng)前結(jié)點移出鏈表,下一個結(jié)點成為當(dāng)前結(jié)點
 //如果移出的結(jié)點是最后一個結(jié)點,則第一個結(jié)點成為當(dāng)前結(jié)點
 public Object remove( ) 
 {
 Object temp;
 if (Length == 0)
  throw new System.Exception( );
 else if (Length == 1) 
 {
  temp = Head.data;
  deleteAll( );
 } 
 else 
 {
  Node cur = cursor( );
  temp = cur.data;
  if (cur == Head)
  Head = cur.next;
  else if (cur == Tail) 
  {
  Pointer.next = null;
  Tail = Pointer;
  reset( );
  } 
  else
  Pointer.next = cur.next;
  Length--;
 }
 return temp;
 }
 //返回當(dāng)前結(jié)點的指針
 private Node cursor( ) 
 {
 if (Head == null)
  throw new System.Exception( );
 else if (Pointer == null)
  return Head;
 else
  return Pointer.next;
 }
 //鏈表的簡單應(yīng)用舉例
 public static void Main( ) 
 {
 List a = new List();
 for (int i = 1; i <= 10; i++)
  a.insert( new IntPtr(i));
 Console.WriteLine(a.currentNode( ));
 while (!a.isEnd( ))
  Console.WriteLine(a.nextNode( ));
 a.reset();
 while (!a.isEnd( )) 
 {
  a.remove( );
 }
 a.remove( );
 a.reset( );
 if (a.isEmpty( ))
  Console.WriteLine("There is no Node in List!");
 Console.WriteLine("You can press return to quit!");
 try 
 {
  // 確保用戶看清程序運行結(jié)果
  Console.Read( );
 } 
 catch (IOException e) 
 {
 }
 }
}

相關(guān)文章

  • Unity實現(xiàn)簡單虛擬搖桿

    Unity實現(xiàn)簡單虛擬搖桿

    這篇文章主要為大家詳細介紹了Unity實現(xiàn)簡單虛擬搖桿,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • Unity時間戳的使用方法

    Unity時間戳的使用方法

    這篇文章主要為大家詳細介紹了Unity時間戳的使用方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • UGUI繪制動態(tài)曲線

    UGUI繪制動態(tài)曲線

    這篇文章主要為大家詳細介紹了UGUI繪制動態(tài)曲線的具體方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • C#利用異或算法實現(xiàn)加密解密

    C#利用異或算法實現(xiàn)加密解密

    這篇文章主要為大家詳細介紹了C#如何利用異或算法實現(xiàn)加密解密的功能,文中的示例代碼講解詳細,對我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-01-01
  • C#線程定義和使用方法詳解

    C#線程定義和使用方法詳解

    這篇文章主要介紹了C#Thread類的基本用法,如何定義一個線程類,為線程傳遞參數(shù)的方法,詳解看下文
    2013-11-11
  • WPF彈出帶蒙板的消息框

    WPF彈出帶蒙板的消息框

    這篇文章主要為大家詳細介紹了WPF彈出帶蒙板的消息框,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • C#使用TimeSpan對象實現(xiàn)獲取時間間隔

    C#使用TimeSpan對象實現(xiàn)獲取時間間隔

    TimeSpan對象代表兩個時間段的間隔或跨度,使用TimeSpan對象可以方便地獲取兩個時間段的間隔,下面我們就來看看C#使用TimeSpan對象實現(xiàn)獲取時間間隔的具體操作吧
    2024-01-01
  • C#中Trim()、TrimStart()、TrimEnd()的用法介紹

    C#中Trim()、TrimStart()、TrimEnd()的用法介紹

    這篇文章主要介紹了C#中Trim()、TrimStart()、TrimEnd()的用法,有需要的朋友可以參考一下
    2014-01-01
  • CAD2008+VS2008開發(fā)ObjectARX加載失敗問題(推薦)

    CAD2008+VS2008開發(fā)ObjectARX加載失敗問題(推薦)

    這篇文章主要介紹了CAD2008+VS2008開發(fā)ObjectARX加載失敗問題,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • C#使用Excel動態(tài)函數(shù)實現(xiàn)生成依賴列表

    C#使用Excel動態(tài)函數(shù)實現(xiàn)生成依賴列表

    這篇文章主要為大家詳細介紹了如何在C#中使用?Excel?動態(tài)函數(shù)生成依賴列表,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02

最新評論