欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

using System;
using System.IO;
// 構(gòu)成鏈表的結(jié)點(diǎn)定義 
public class Node 
{
 public Object data;
 public Node next;
 public Node( Object d ) 
 {
 data = d;
 next = null;
 }
}
public class List 
{
 // 用變量來(lái)實(shí)現(xiàn)表頭
 private Node Head = null;
 private Node Tail = null;
 private Node Pointer = null;
 private int Length = 0;
 //清空整個(gè)鏈表 
 public void deleteAll( ) 
 {
 Head = null;
 Tail = null;
 Pointer = null;
 Length = 0;
 }
 //鏈表復(fù)位,使第一個(gè)結(jié)點(diǎn) 成為當(dāng)前結(jié)點(diǎn)
 public void reset( ) 
 {
 Pointer = null;
 }
 //判斷鏈表是否為空
 public bool isEmpty( ) 
 {
 return (Length == 0);
 }
 //判斷當(dāng)前結(jié)點(diǎn)是否 為最后一個(gè)結(jié)點(diǎn)
 public bool isEnd( ) 
 {
 if (Length == 0)
  throw new System.Exception( );
 else if (Length == 1)
  return true;
 else
  return (cursor( ) == Tail);
 }
 //返回當(dāng)前結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)的值, 并使其成為當(dāng)前結(jié)點(diǎn)
 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é)點(diǎn)的值
 public Object currentNode( ) 
 {
 Node temp = cursor( );
 return temp.data;
 }
 //在當(dāng)前結(jié)點(diǎn)前插入一個(gè)結(jié)點(diǎn), 并使其成為當(dāng)前結(jié)點(diǎn)
 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é)點(diǎn)移出鏈表,下一個(gè)結(jié)點(diǎn)成為當(dāng)前結(jié)點(diǎn)
 //如果移出的結(jié)點(diǎn)是最后一個(gè)結(jié)點(diǎn),則第一個(gè)結(jié)點(diǎn)成為當(dāng)前結(jié)點(diǎn)
 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é)點(diǎn)的指針
 private Node cursor( ) 
 {
 if (Head == null)
  throw new System.Exception( );
 else if (Pointer == null)
  return Head;
 else
  return Pointer.next;
 }
 //鏈表的簡(jiǎn)單應(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 
 {
  // 確保用戶看清程序運(yùn)行結(jié)果
  Console.Read( );
 } 
 catch (IOException e) 
 {
 }
 }
}

相關(guān)文章

  • Unity實(shí)現(xiàn)簡(jiǎn)單虛擬搖桿

    Unity實(shí)現(xiàn)簡(jiǎn)單虛擬搖桿

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

    Unity時(shí)間戳的使用方法

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

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

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

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

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

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

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

    WPF彈出帶蒙板的消息框

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

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

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

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

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

    CAD2008+VS2008開(kāi)發(fā)ObjectARX加載失敗問(wèn)題(推薦)

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

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

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

最新評(píng)論