C#实现的数据结构源码

时间:2012-04-29 03:30:53
【文件属性】:
文件名称:C#实现的数据结构源码
文件大小:91KB
文件格式:RAR
更新时间:2012-04-29 03:30:53
c#,数据结构,Data Struct using System; using QueueDs; namespace BinaryTreeDs { public class LinkBiTree { private Node head; //头引用 //头引用属性 public Node Head { get { return head; } set { head = value; } } //构造函数 public LinkBiTree() { head = null; } //构造函数 public LinkBiTree(T val) { Node p = new Node(val); head = p; } //构造函数 public LinkBiTree(T val, Node lp, Node rp) { Node p = new Node(val, lp, rp); head = p; } //判断是否是空二叉树 public bool IsEmpty() { if (head == null) { return true; } else { return false; } } //获取根结点 public Node Root() { return head; } //获取结点的左孩子结点 public Node GetLChild(Node p) { return p.LChild; } //获取结点的右孩子结点 public Node GetRChild(Node p) { return p.RChild; } //将结点p的左子树插入值为val的新结点, //原来的左子树成为新结点的左子树 public void InsertL(T val, Node p) { Node tmp = new Node(val); tmp.LChild = p.LChild; p.LChild = tmp; } //将结点p的右子树插入值为val的新结点, //原来的右子树成为新结点的右子树 public void InsertR(T val, Node p) { Node tmp = new Node(val); tmp.RChild = p.RChild; p.RChild = tmp; } //若p非空,删除p的左子树 public Node DeleteL(Node p) { if ((p == null) || (p.LChild == null)) { return null; } Node tmp = p.LChild; p.LChild = null; return tmp; } //若p非空,删除p的右子树 public Node DeleteR(Node p) { if ((p == null) || (p.RChild == null)) { return null; } Node tmp = p.RChild; p.RChild = null; return tmp; } //编写算法,在二叉树中查找值为value的结点 public Node Search(Node root, T value) { Node p = root; if (p == null) { return null; } if (!p.Data.Equals(value)) { return p; } if (p.LChild != null) { return Search(p.LChild, value); } if (p.RChild != null) { return Search(p.RChild, value); } return null; } //判断是否是叶子结点 public bool IsLeaf(Node p) { if ((p != null) && (p.LChild == null) && (p.RChild == null)) { return true; } else { return false; } } //中序遍历 public void inorder(Node ptr) { if (IsEmpty()) { Console.WriteLine("Tree is empty"); return; } if (ptr != null) { inorder(ptr.LChild); Console.Write(ptr.Data + " "); inorder(ptr.RChild); } } //前序遍历 public void preorder(Node ptr) { if (IsEmpty()) { Console.WriteLine("Tree is empty"); return; } if (ptr != null) { Console.Write(ptr.Data + " "); preorder(ptr.LChild); preorder(ptr.RChild); } } //后序列遍历 public void postorder(Node ptr) { if (IsEmpty( )) { Console.WriteLine("Tree is empty"); return; } if (ptr != null) { postorder(ptr.LChild); postorder(ptr.RChild); Console.Write(ptr.Data + " "); } } public void LevelOrder(Node root) { //根结点为空 if (root == null) { return; } //设置一个队列保存层序遍历的结点 CSeqQueue> sq = new CSeqQueue>(50); //根结点入队 sq.EnQueue(root); //队列非空,结点没有处理完 while (!sq.IsEmpty()) { //结点出队 Node tmp = sq.DeQueue(); //处理当前结点 Console.WriteLine("{o}", tmp); //将当前结点的左孩子结点入队 if (tmp.LChild != null) { sq.EnQueue(tmp.LChild); } if (tmp.RChild != null) { //将当前结点的右孩子结点入队 sq.EnQueue(tmp.RChild); } } } } }
【文件预览】:
DataStructure
----DataStructure.suo(92KB)
----QueueDs()
--------LinkBankQueue.cs(591B)
--------Properties()
--------IQueue.cs(367B)
--------IBankQueue.cs(126B)
--------CSeqBankQueue.cs(1KB)
--------CSeqQueue.cs(2KB)
--------QueueNode.cs(856B)
--------BankQueueApp.cs(2KB)
--------QueueDs.csproj(2KB)
--------LinkQueue.cs(2KB)
----ListDs()
--------DLinkList.cs(4KB)
--------SNode.cs(758B)
--------DbNode.cs(1KB)
--------SLinkList.cs(3KB)
--------ILinarList.cs(542B)
--------Properties()
--------CLinkList.cs(4KB)
--------ListDs.csproj(2KB)
--------SortArith.cs(136B)
--------SortSeqList.cs(8KB)
--------StuNode.cs(893B)
--------SeqList.cs(3KB)
--------SeqListApp.cs(6KB)
----Graph()
--------Node.cs(2KB)
--------IGraph.cs(938B)
--------GraphAdjMatrix.cs(5KB)
--------Properties()
--------GraphAdjListApp.cs(3KB)
--------GraphAdjList.cs(7KB)
--------GraphAdjMaxtixApp.cs(3KB)
--------Graph.csproj(2KB)
----BinaryTreeDs()
--------BinaryTreeDs.csproj(2KB)
--------Node.cs(1KB)
--------LinkBiTree.cs(4KB)
--------Properties()
--------LinkBiSearchTree.cs(4KB)
--------LinkBiTreeApp.cs(127B)
--------HNode.cs(1KB)
--------HuffmanTree.cs(2KB)
----StringDs()
--------SeqString.cs(4KB)
--------Properties()
--------OneToHunderdQ.cs(4KB)
--------IString.cs(330B)
--------StringDs.csproj(2KB)
----StackDs()
--------LinkStack.cs(2KB)
--------Properties()
--------TrainArrangeByLinkStack.cs(3KB)
--------StackNode.cs(748B)
--------IStack.cs(323B)
--------StackDs.csproj(2KB)
--------TrainArrangeBySeqStack.cs(4KB)
--------StackApp.cs(70B)
--------SeqStack.cs(2KB)
----DataStructure.sln(6KB)
----TreeDS()
--------MLTree.cs(9KB)
--------TreeDS.suo(18KB)
--------TreeDS.csproj(2KB)
--------TreeDS.sln(900B)
--------Properties()
--------Program.cs(622B)
--------CSTree.cs(3KB)
--------PCLTree.cs(10KB)
--------PTree.cs(8KB)
--------CLTree.cs(8KB)
----DataStructure()
--------FindPhoneNumber.cs(2KB)
--------DisplayNumber.cs(354B)
--------Properties()
--------DataStructure.csproj.user(560B)
--------DataStructure.csproj(2KB)
--------StoredStucture.cs(2KB)
----SortDs()
--------SortArithMetic.cs(7KB)
--------OlympicsSort.cs(4KB)
--------Properties()
--------RadixNode.cs(847B)
--------OlympicsSortApp.cs(3KB)
--------OlyNode.cs(1KB)
--------SortDsApp.cs(5KB)
--------SortDs.csproj(2KB)
----SearchDS()
--------OlympicsSearch.cs(4KB)
--------OlympicsSearchApp.cs(5KB)
--------Properties()
--------SearchArithMetic.cs(2KB)
--------SearchDsApp.cs(4KB)
--------OlyNode.cs(1KB)
--------SearchDS.csproj(3KB)
----ArrayDs()
--------IArray.cs(454B)
--------Properties()
--------tupletype.cs(2KB)
--------spmaxtrixApp.cs(4KB)
--------CityDistance.cs(1KB)
--------ArrayDs.cs(181B)
--------复件 GuessNumber.cs(847B)
--------ArrayDs.csproj(2KB)
--------GuessNumber.cs(2KB)

网友评论

  • 数据结构的实现源码,有空可多看看。