单链表相关方法
1. 获取单链表长度
public int findLength(LinkList list) {
int count=0;
while(true){
count++;
if(list.next==null)return count;
list=list.next;
}
}
2. 查找链表中第一个值为e的结点
public LinkList findEByValue(LinkList list,int e) {
while(list!=null) {
if(list.data==e) {
return list;
}
list=list.next;
}
return null;
}
3. 查找链表中第k个结点的值
public LinkList findEByNum(LinkList list,int k) {
if(getLength(list)<k)
return null;
int count=0;
while (count<k) {
list=list.next;
count++;
}
return list;
}
4. 颠倒单链表并输出
public void printReverseLinkList(LinkList list) {
LinkList head=list;
LinkList p=list.next;
LinkList q;
list.next=null;
while(p!=null) {
q=p.next;
p.next=head.next;
head.next=p;
p=q;
}
printLinkList(head);
}
5. 去掉单链表中重复的值,并返回一个删去重复值的单链表
public LinkList deleteSame(LinkList list) {
list=list.next;
LinkList haha=new LinkList();
int j=0;
int len=getLength(list);
int lenxixi=0;
int[] arr=new int[100];
for (int i = 0; i < len; i++) {
arr[list.data]++;
list=list.next;
}
System.out.println();
for (int i = 0; i < arr.length; i++) {
if(arr[i]!=0) {
lenxixi++;
}
}
int[] xixi=new int[lenxixi];
for (int i = 0; i < arr.length; i++) {
if(arr[i]!=0) {
xixi[j]=i;
j++;
}
}
haha = haha.TailBuildList(xixi);
return haha;
}