/**
*
*
*
*/
package dreamer.util;
class StackNode<T>
{
protected T data;
protected StackNode previous;
protected StackNode next;
}
public class LinkedStack<T>implements Stack<T>
{
private StackNode head;
private StackNode tail;
private int len;
public LinkedStack()
{
head = new StackNode();
tail = new StackNode();
head.next = tail;
tail.previous = head;
len = 0;
}
public void insert(int index,T elem)throws IndexSlopOverException
{
if(index<0 || index>=len)
throw new IndexSlopOverException();
int i = -1;
StackNode cursor = head.next;
while(cursor!=tail)
{
i++;
if(i==index)
{
StackNode node = new StackNode();
node.data = elem;
cursor.previous.next = node;
node.previous = cursor.previous;
node.next = cursor;
cursor.previous = node;
len++;
return;
}
cursor = cursor.next;
}
}
public T remove(int index)throws IndexSlopOverException
{
if(index<0 || index>=len)
throw new IndexSlopOverException();
int i = -1;
StackNode cursor = head.next;
while(cursor!=tail)
{
i++;
if(i==index)
{
T elem = (T)cursor.data;
cursor.previous.next = cursor.next;
cursor.next.previous = cursor.previous;
len--;
return elem;
}
cursor = cursor.next;
}
return null;
}
public boolean remove(T elem)throws IndexSlopOverException
{
if(len==0)
throw new IndexSlopOverException();
StackNode cursor = head.next;
final int LENGTH = len;
while(cursor!=tail)
{
if(cursor.data.equals(elem))
{
cursor.previous.next = cursor.next;
cursor.next.previous = cursor.previous;
len--;
}
cursor = cursor.next;
}
if(len==LENGTH)
return false;
return true;
}
public void push(T elem)
{
StackNode node = new StackNode();
node.data = elem;
tail.previous.next = node;
node.previous = tail.previous;
node.next = tail;
tail.previous = node;
len++;
}
public T pop()throws IndexSlopOverException
{
StackNode top = tail.previous;
if(top==head)
throw new IndexSlopOverException();
T elem = (T)top.data;
top.previous.next = top.next;
top.next.previous = top.previous;
len--;
return elem;
}
public T peek()throws IndexSlopOverException
{
StackNode top = tail.previous;
if(top==head)
throw new IndexSlopOverException();
return (T)top.data;
}
public void set(int index,T elem)throws IndexSlopOverException
{
if(index<0 || index>=len)
throw new IndexSlopOverException();
int i = -1;
StackNode cursor = head.next;
while(cursor!=tail)
{
i++;
if(i==index)
{
cursor.data = elem;
return;
}
cursor = cursor.next;
}
}
public T get(int index)throws IndexSlopOverException
{
if(index<0 || index>=len)
throw new IndexSlopOverException();
int i = -1;
StackNode cursor = head.next;
while(cursor!=tail)
{
i++;
if(i==index)
return (T)cursor.data;
cursor = cursor.next;
}
return null;
}
public boolean contains(T elem)
{
if(indexOf(elem)==-1)
return false;
return true;
}
public int indexOf(T elem)
{
int i = -1;
StackNode cursor = head.next;
while(cursor!=tail)
{
i++;
if(cursor.data.equals(elem))
return i;
cursor = cursor.next;
}
return -1;
}
public int size()
{
return len;
}
public Object [] toArray()
{
if(len==0)
return null;
Object [] array = new Object[len];
int i = -1;
StackNode cursor = head.next;
while(cursor!=tail)
{
i++;
array[i] = cursor.data;
cursor = cursor.next;
}
return array;
}
public boolean isEmpty()
{
if(len==0)
return true;
return false;
}
public void clear()
{
StackNode cursor = head.next;
while(cursor!=tail)
{
StackNode next = cursor.next;
cursor.previous = null;
cursor.next = null;
cursor = next;
}
head.next = tail;
tail.previous = head;
len = 0;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Java_Datastructure.rar_java 哈希_java 哈希表
共46个文件
class:25个
java:21个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 153 浏览量
2022-09-20
15:26:43
上传
评论
收藏 35KB RAR 举报
温馨提示
java 实现常用数据结构(链表,集合,栈,哈希表,搜索,排序等).
资源推荐
资源详情
资源评论
收起资源包目录
Java_Datastructure.rar (46个子文件)
JAVA 重写数据结构
Heap.java 1KB
LinkedStack.java 4KB
LinkedList.java 4KB
Set.java 356B
LinkedSet.java 2KB
ArrayQueue.java 2KB
MergeSort.java 1KB
QuickSort.java 961B
Stack.java 699B
Queue.java 418B
SelectSort.java 659B
IndexSlopOverException.java 184B
ArrayList.java 3KB
BinaryTree.java 2KB
ArrayStack.java 3KB
ArraySet.java 2KB
HashTable.java 4KB
LinkedQueue.java 3KB
List.java 599B
InsertSort.java 671B
dreamer
util
HashTable$HashNode.class 1KB
ArrayStack.class 3KB
ArrayList.class 2KB
List.class 688B
SetNode.class 375B
Stack.class 829B
LinkedSet.class 2KB
Set.class 519B
IndexSlopOverException.class 345B
BinaryTree.class 2KB
ArraySet.class 2KB
Heap.class 983B
HeapStruct.class 258B
ListNode.class 378B
Queue.class 544B
BinSortTree.class 2KB
MergeSort.class 1KB
LinkedStack.class 3KB
QueueNode.class 381B
HashTable.class 3KB
LinkedQueue.class 2KB
LinkedList.class 3KB
ArrayQueue.class 2KB
QuickSort.class 954B
StackNode.class 381B
BinSortTree.java 2KB
共 46 条
- 1
资源评论
邓凌佳
- 粉丝: 65
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 论文(最终)_20240430235101.pdf
- 基于python编写的Keras深度学习框架开发,利用卷积神经网络CNN,快速识别图片并进行分类
- 最全空间计量实证方法(空间杜宾模型和检验以及结果解释文档).txt
- 5uonly.apk
- 蓝桥杯Python组的历年真题
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
- 林周瑜-论文.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功