程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 鏈堆的修改 使用雙鏈來定義堆結點

鏈堆的修改 使用雙鏈來定義堆結點

編輯:.NET實例教程

/**//**********************************************
 * 程序員:        鄭永丹                          
 * 修改日期:      2007-10-16
 * 程序內容:
 *                雙鏈堆棧類
 *        
 *        
 *        
 * **********************************************/
using System;
using System.Collections.Generic;
using System.Text;

namespace MyClassLibrary.Link
...{
    /**//// <summary>
    /// 泛型堆棧類
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public class LinkStack<T>

  ...{
        /**//// <summary>
        /// 泛型堆棧類 構造函數
        /// </summary>
        public LinkStack()
        ...{ }

        private int stackLength = 0;            //堆棧長度
        private LinkStackNode<T> FirstNode = null; //堆棧頭
        private LinkStackNode<T> EndNode = null; //堆棧尾 


        /**//// <summary>
        /// 堆棧長度
        /// </summary>
        public int StackLength
        ...{
    get ...{ return stackLength; }
        }

        /**//// <summary>
        /// 入棧
        /// </summary>
        /// <param name="NodeValue">結點值</param>
        public void Push(T NodeValue)
        ...{
            LinkStackNode<T> StackNode = new LinkStackNode<T>();
            StackNode.NodeValue = NodeValue;
            if (stackLength == 0)
            ...{
                FirstNode.NextNode = StackNode;
                EndNode = StackNode;
                ++stackLength;
            }
            else
   ...{
                EndNode.NextNode = StackNode;
                EndNode = StackNode;
                ++stackLength;
            }
        }

        /**//// <summary>
        /// 出棧
        /// </summary>
        /// <returns>結點值</returns>
        public T Pop()
        ...{
            if (stackLength == 0) return default(T);
            T reT = EndNode.NodeValue;


            --stackLength;
            EndNode = EndNode.LastNode ;
            return reT;
        }

    }

  /**//// <summary>
    /// 鏈堆結點對象
    /// </summary>
    /// <typeparam name="T"></typeparam>
    internal class LinkStackNode<T>
    ...{
        /**//// <summary>
        /// 鏈堆結點對象 構造函數
        /// </summary>
        public LinkStackNode()
        ...{ }

        private T nodeValue = default(T);                       //結點對象

        private LinkStackNode<T> nextNode = null;                //   結點對應的下一結點地址
        private LinkStackNode<T> lastNode = null;               //上一結點

/**//// <summary>
        /// 結點對應的上一結點地址
        /// </summary>
        internal LinkStackNode<T> LastNode
        ...{
            get ...{ return lastNode; }
            set ...{ lastNode = value; }
        }

        /**//// <summary>
        ///  結點對應的下一結點地址
        /// </summary>
        internal LinkStackNode<T> NextNode
     ...{
            get ...{ return nextNode; }
            set ...{ nextNode = value; }
        }

        /**///// <summary>
        /// 結點的值
        /// </summary>
        internal T NodeValue
        ...{
            get ...{ return nodeValue; }
    set ...{ nodeValue = value; }
        }
    }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved