数据结构java版单链表_数据结构(java版)学习笔记(三)——线性表之单链表...

importjava.util.Scanner;public class LinkedList implementsListIntf{

Lnode h=null;public static String toucha = "头插法";public static String weicha = "尾插法";publicLinkedList(String s){//如果参数是头插法则使用头插法创建单链表,不是则使用尾插法

if(s.equals(toucha)){

h=newLnode();

h.data= 'f';

h.next= null;

Lnode p;

Scanner scanner= newScanner(System.in);

String str=scanner.nextLine();for(int i=0;i

p= newLnode();

p.data=str.charAt(i);

p.next=h.next;

h.next=p;

}

scanner.close();

}else{

h=newLnode();

h.data= 'f';

h.next= null;

Lnode p,t;

t=h; //t用来代替头结点,同时,也就是

Scanner scanner = newScanner(System.in);

String str=scanner.nextLine();for(int i=0;i

p= newLnode();

p.data= str.charAt(i); //接收String中的char

p.next= t.next;//此条语句与p.next =null 等同

t.next =p;

t= p; //t结点一直指向链表的末尾

}

scanner.close();

}

}public voiddisplay(){

Lnode p=h.next;while(p!=null){

System.out.println(p.data);

p=p.next;

}

}/*** 设置头结点

*@param_h*/

public voidsetH(Lnode _h){

h=_h;

}/***

*@paramp 结点

*@paramx 某个结点的值为x

* 将值为x的结点插入到p结点的后面*/

public void insertElementAfter(Lnode p,charx){

Lnode t= newLnode(x);

t.next= p.next; //这里容易忘记

p.next=t;

}/***

*@paramx

*@return查找到值为x的结点*/

public Lnode search(charx){

Lnode t=h.next;while(t!=null){if(t.data==x){

System.out.println("找到");returnt;

}

t=t.next;

}return null;

}

@Overridepublic intsize() {int i =0;

Lnode t=h.next;while(t!=null){

i++;

t=t.next;

}returni;

}

@Overridepublic voidclear() {

h.next= null;

}

@Overridepublic booleanisEmpty() {if(h.next==null){return false;

}else{return true;

}

}/***

*@parami 需要找到的第i个结点

*@return第i个结点*/

public Lnode getLnode(inti){

Lnode t= h; //从头结点算起,j就是从0开始

int j =0;while(j

t=t.next;

j++;

}if(t==null){return null;

}else{returnt;

}

}

@Overridepublic String get(inti) {//取得第i个结点的值

Lnode t = h; //从头结点算起,j就是从0开始

int j =0;while(j

t=t.next;

j++;

}//或者从第一个结点开始

/*Lnode t = h.next;

int j =1;

while(j

t = t.next;

j++;

}*/

//这里需要加一个溢出处理

if(t==null){return null;

}else{returnString.valueOf(t.data);

}

}

@Overridepublic intindexOf(String s) {//单链表不需要复写此方法

return 0;

}

@OverridepublicString getPre(String s) {//单链表不需要复写此方法

return null;

}

@OverridepublicString getNext(String s) {//TODO Auto-generated method stub

return null;

}

@Overridepublic void insertElementAt(String s, inti) {//TODO Auto-generated method stub

}

@Overridepublic String remove(inti) {//先找到第i个结点,之后再将其移出,斌返回其的数值

Lnode t =getLnode(i);

Lnode q= getLnode(i-1); //q为t的前趋

q.next =t.next;returnString.valueOf(t.data);

}

@OverridepublicString remove(String s) {//TODO Auto-generated method stub

return null;

}

}

你可能感兴趣的:(数据结构java版单链表)