数据结构课设--栈(顺序栈,链式栈)
来源:互联网 发布:windows软件包2015 编辑:程序博客网 时间:2024/05/22 11:41
接口是按照课本上的ADT定义编写的,其余部分自己编写,泛型编程,这样的话可以有更加广泛的用途。
程序可以编译用过。
///链表 class singleLinkedList<T> { public T data; public singleLinkedList<T> next; public singleLinkedList() { data = default(T); next = null; } } ///栈与队列 ///栈 interface iStack<T> { void InitStack(); void DestoryStack(); void ClearStack(); bool StackEmpty(); int StackLength(); void GetTop(ref T value); void Push(T value); void Pop(ref T value); bool StackTraverse(visit<T> tra); } ///顺序栈 class SqStack<T> : iStack<T> { static int initSize = 50; static int stackInr = 50; T[] data; int curSize; int top; int limit; public void InitStack() { curSize = 0; limit = initSize; data = new T[initSize]; } public void DestoryStack() { data = null; curSize = 0; top = 0; } public void ClearStack() { curSize = 0; top = 0; } public bool StackEmpty() { if (curSize == 0) { return true; } return false; } public int StackLength() { return curSize; } public void GetTop(ref T value) { value = data[top]; --top; } public void Push(T value) { if (top < limit - 5) { data[top + 1] = value; ++top; curSize++; } else { limit += stackInr; data[top + 1] = value; ++top; curSize++; } } public void Pop(ref T value) { if (top > 0) { value = data[top]; data[top] = default(T); --top; } else { value = default(T); } } public bool StackTraverse(visit<T> tra) { for (int i = 0; i < top; i++) { if (tra(data[i])) { return false; } } return true; } } ///顺序栈 ///链式栈 class LinkedStack<T> : iStack<T> { singleLinkedList<T> head; int curSize; singleLinkedList<T> top; public void InitStack() { head = new singleLinkedList<T>(); top = head; curSize = 0; } public void DestoryStack() { head = null; } public void ClearStack() { head = null; } public bool StackEmpty() { if (0 == curSize) { return true; } else { return false; } } public int StackLength() { return curSize; } public void GetTop(ref T value) { singleLinkedList<T> p = head; if (p.Equals(top)) { value = top.data; } else { while (p.next != null) { if (p.next.Equals(top)) { value = p.next.data; } else { p = p.next; } } } } public void Push(T value) { singleLinkedList<T> tmp = new singleLinkedList<T>(); top.next = tmp; curSize++; } public void Pop(ref T value) { singleLinkedList<T> p = head; if (p.Equals(top)) { value = top.data; } else { while (p.next != null) { if (p.next.Equals(top)) { value = p.next.data; --curSize; top = p; } else { p = p.next; } } } } public bool StackTraverse(visit<T> tra) { singleLinkedList<T> p = head; while (p != null && p.next != null) { if (tra(p.data)) { return false; } p = p.next; } return true; } } ///链式栈 ///栈
0 0
- 数据结构课设--栈(顺序栈,链式栈)
- 数据结构(顺序单链表、链式单链表、顺序栈、链式栈、顺序队列、链式队列)
- 数据结构--顺序栈和链式栈
- 数据结构之栈(顺序栈和链式栈)
- java数据结构之(顺序栈+链式栈)
- 数据结构5(链式栈)
- 数据结构栈(链式实现)
- 数据结构学习笔记(6.顺序栈及链式栈)
- C++ —— 数据结构之 顺序栈,链式栈?
- 数据结构Java实现05----栈:顺序栈和链式堆栈
- Java数据结构05----栈:顺序栈和链式堆栈
- 数据结构Java实现05----栈:顺序栈和链式堆栈
- 数据结构Java实现05----栈:顺序栈和链式堆栈
- 数据结构Java实现05----栈:顺序栈和链式堆栈
- 数据结构-【栈】的链式存储和顺序存储
- Python 数据结构 之 栈 的顺序、链式存储结构
- 数据结构-栈的顺序存储和链式存储
- 数据结构 链式栈
- SSH框架jar包分析
- Java线程(四):线程中断、线程让步、线程睡眠、线程合并
- Maven 手动添加 JAR 包到本地仓库
- linux之grep命令
- 经验总结10--ztree增删改
- 数据结构课设--栈(顺序栈,链式栈)
- 1、GNU/Linux的历史
- 弹出div
- 组图:4岁工地萌娃忘情歌唱走红 网友赞秒杀张曼玉
- 语音群呼 售前营销售后服务一体化
- IOS6屏幕旋转详解(自动旋转、手动旋转、兼容IOS6之前系统) 【转】
- Android中shape的使用
- linux 下apache服务器的详细配置
- 卸载删除tomcat服务