用JAVA语言这以下程序代码。 链表类 1.能够从头部添加节点。 2.能够从尾部添加节点。 3.

用JAVA语言这以下程序代码。链表类1.能够从头部添加节点。2.能够从尾部添加节点。3.能够查找出来一个值是否在链表内4.能够输出来一个值在链表中的位置是第几个。5.能够... 用JAVA语言这以下程序代码。
链表类
1.能够从头部添加节点。
2.能够从尾部添加节点。
3.能够查找出来一个值是否在链表内
4.能够输出来一个值在链表中的位置是第几个。
5.能够输出来一个值在链表中的全部位置。
6.能够输入新节点到某一个值(第一次出现)的节点 之后
7.能够从节点删除某个值(只删离头最近的那一个)
8.能够从节点删除某个值(全部)
9.能够从节点删除第几个值
10.能够任意输出第几个节点的值。
11.能够遍历整个链表的值
12.能够获得链表的长度
13.能够获得链表的头
越详细越好,谢谢了!
展开
 我来答
pieryon
2014-10-18 · 知道合伙人数码行家
pieryon
知道合伙人数码行家
采纳数:14410 获赞数:166873
获取软件设计师高级职称 万达金融最佳创新奖

向TA提问 私信TA
展开全部
package com.llist;

public class SingleLinkList<T> implements LList<T> {

protected Node<T> head; // 头指针,指向单链表的头结点

// 默认构造方法,构造空单链表
public SingleLinkList(){
head = new Node<T>();
}

// 由指定数组中的多个对象构造单链表,采用尾查构造单链表
public SingleLinkList(T[] element){
this();
Node<T> rear = this.head;
for(int i=0;i<element.length;i++){
rear.next = new Node<T>(element[i],null);
rear = rear.next;
}
}

// 判断链表是否为空
public boolean isEmpty() {
return this.head.next==null;
}

// 返回链表的长度
public int length() {
int count = 0;
Node<T> p = this.head.next;
while(p!=null){
count++;
p = p.next;
}
return count;
}

// 返回第i(i>0)个元素,若i的指定序号无效,则返回null
public T get(int i) {
if(i<=0||i>this.length()){
return null;
}
else{
Node<T> p = this.head;
for(int j=0;j<i;j++){
p = p.next;
}
return p.data;
}
}

// 设置第i(i>0)个元素的值为x,若i指定序号无效,则抛出序号越界异常
public void set(int i, T x) {
if(x==null)
return;
if(i<=0||i>this.length()){
// 抛出序号越界异常
throw new IndexOutOfBoundsException("指定序号i="+i+"越界!");
}
else{
Node<T> p = this.head;
for(int j=0;j<i;j++){
p = p.next;
}
p.data = x;
}

}

// 链表的插入操作
public void insert(int i, T x) {
if(x==null) // 插入对象不能为空
return;
if(i==0){ // 插在头结点之后
head.next = new Node<T>(x,this.head.next);
}
else if(i>0&&i<=this.length()){
Node<T> p = this.head;
// 寻找插入位置
for(int j=0;j<i;j++){
p = p.next;
}
// 插入x作为p结点的后继结点
p.next = new Node<T>(x,p.next);
}
else{
// 抛出序号越界异常
throw new IndexOutOfBoundsException("指定序号i="+i+"越界!");
}

}

// 在单链表的最后添加对象
public void append(T x) {
insert(this.length(),x);
}

// 删除序号为i的结点,操作成功返回给对象,否则返回null
public T remove(int i) {
if(i<=0||i>this.length()){
return null;
}
else{
Node<T> p = this.head;
// 定位到待删除结点(i)的前驱结点(i-1)
for(int j=0;j<i-1;j++){
p = p.next;
}
T old = p.next.data;
p.next = p.next.next;
return old;
}
}

// 删除单链表的所有元素
public void removeAll() {
this.head.next = null;
}

// 查找,返回首次出现关键子key的元素的序号
public int Search(T key) {
if(key==null)
return 0;
else{
int i = 0;
Node<T> p = this.head;
while(p.next!=null){
i++;
p = p.next;
if(p.data.equals(key))
break;
}
if(p.next==null)
return 0;
else
return i;
}
}

//返回链表的所有元素的描述字符串,覆盖Object类的toString()方法
public String toString(){
String str = " ( ";
Node<T> p = this.head.next;
while(p!=null){
str += p.data.toString();
p = p.next;
if(p!=null)
str += ",";
}
str += " ) ";
return str;
}

}
追答
采纳
都有了
大学作业题库
2014-10-18 · 知道合伙人互联网行家
大学作业题库
知道合伙人互联网行家
采纳数:149 获赞数:180
农民出身,单身一位。书写代码过10万行,没读过书。现任利得财富资深酱油人。

向TA提问 私信TA
展开全部
汗。你用linklist 什么的机会好像就可以。
更多追问追答
追问
不知道代码怎么写啊,大神快帮我完整的写下来吧
追答
不用自己写,给你找个集合
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式