c#之链栈
来源:互联网 发布:民治c语言培训 编辑:程序博客网 时间:2024/05/14 19:05
1,创建链栈的节点 LinkNode
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 栈{ /// <summary> /// 链栈的节点 /// </summary> /// <typeparam name="T"></typeparam> class LinkNode<T> { private T data;//存储数据 private LinkNode<T> next;//指向下一节点 public LinkNode() { data = default(T); next = null; } public LinkNode(T data) { this.data = data; next = null; } public LinkNode(T data, LinkNode<T> next) { this.data = data; this.next = next; } public LinkNode(LinkNode<T> next) { this.next = next; data = default(T); } public T Data { get { return data; } set { data = value; } } public LinkNode<T> Next { get { return next; } set { next = value; } } }}
2,创建栈的接口
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 栈{ //数序栈 interface ISeqStack<T> { int Count { get; }//元素个数(属性) int GetLenth();//栈的长度(方法) bool IsEmpty();//栈是否为空 void Clear();//清空栈 void Push(T item);//入栈 T Pop();//出栈 T PeekTop();//取得栈顶元素 }}
3,创建链栈
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 栈{ class LinkStack<T> : ISeqStack<T> { private LinkNode<T> top;//栈顶元素节点 private int count = 0;//记录栈的元素个数 /// <summary> /// 栈中元素的个数 /// </summary> public int Count { get { return count; } } public int GetLenth() { return count; } public bool IsEmpty() { return count == 0; } public void Clear() { count = 0; top = null; } public void Push(T item) { //栈顶元素 LinkNode<T> newNode = new LinkNode<T>(item); newNode.Next = top; top = newNode; count++; } public T Pop() { T data = top.Data; top = top.Next; count--; return data; } public T PeekTop() { return top.Data; } }}4,测试链栈
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 栈{ class Program { static void Main(string[] args) { //ISeqStack<char> s = new SeqStack<char>(30); ISeqStack<char> s = new LinkStack<char>(); s.Push('a'); s.Push('b'); s.Push('c'); s.Push('d'); Console.WriteLine("元素 a,b,c,d 入栈之后,栈的元素个数:" + s.Count + " 栈的长度:" + s.GetLenth()); Console.WriteLine("栈顶元素:" + s.PeekTop()); s.PeekTop(); Console.WriteLine("元素 " + s.Pop() + " 出栈之后,栈顶元素:" + s.PeekTop()); Console.WriteLine("元素 " + s.Pop() + " 出栈之后,栈顶元素:" + s.PeekTop()); s.Push('e'); s.Push('f'); s.Push('g'); Console.WriteLine("元素 e,f,g 入栈之后,栈的元素个数:" + s.Count + " 栈顶元素:" + s.PeekTop()); Console.WriteLine("元素 " + s.Pop() + ", " + s.Pop() + " 出栈之后,栈顶元素:" + s.PeekTop()); s.Clear(); Console.WriteLine("清空栈之后,栈的元素个数:" + s.Count + " 栈的长度:" + s.GetLenth()); Console.ReadKey(); } }}5,运行结果
0 0
- c#之链栈
- C#数据结构回顾之链栈
- C#之顺序栈
- 【C#之栈和堆初遇】
- C#之栈学习案例
- c#之栈学习笔记
- C#之链表使用
- C# 实现 链表之背包、队列和栈
- C#数据结构与算法之栈浅析
- C#数据结构回顾之顺序栈
- C#之栈的一些基本知识
- C# 设计模式之 职责链模式
- C#设计模式之职责链
- C#设计模式之责任链模式
- c#之链表学习笔记
- c#设计模式之责任链模式
- C#专题之C#简介
- C#编程之初识C#
- Oracle - 数据库的实例、表空间、用户、表之间关系
- jquery datatable 通过ajax读取数据实例
- kettle中null值的处理方式
- 看3B学校准备明年蓝桥杯的经历。
- C# ToString()用法介绍
- c#之链栈
- 【学习方法总结】:时间积累法
- UIWebView中图片的url
- 继承
- Ehcache(02)——ehcache.xml简介
- 做项目过程
- UITableView的基本方法总结
- Hibernate 实体持久化生命周期状态
- 应用于大规模动作识别的有序轨迹