單鏈表的操作集合

2021-08-06 06:12:49 字數 2934 閱讀 6791

1、定義如下的資料類來儲存結點資訊
class node

}

2、增加結點
public

void

addnode(int data)else

curnode.next = node;

}}

3、刪除索引刪除第幾個結點
public

boolean deletenodebyindex(int

index)

if(index == 1)

//其他情況,

intcount = 0;//定義乙個計數器,標記當前結點時第幾個結點

node prenode = head;

node curnode = prenode.next;

intcount = 2;//初始情況下是第二個結點

while(curnode != null)

count++;

prenode = curnode;

curnode = curnode.next;

}return

false;//刪除失敗

}

4、獲取鍊錶的長度
public

int getlength(node head)

return len;

}

5、列印鍊錶結點資訊
public

void

printnode(node head)

}public

void

printnode(node head)

}

6、對鍊錶排序
public node sortlist(node head)

nextnode = nextnode.next;

}curnode = curnode.next;

}return head;//排序後鍊錶的頭結點

7、刪除重複的結點
//遍歷一次鍊錶,需要額外儲存空間,將每個結點的資訊存放到map(node.data,1),如果遍歷到當前節點不在map中就存放,否則刪除該節點

map map = new hashmap();

node curnode = head;

node prenode = null;

while(curnode != null)else

curnode = curnode.next;

}//遍歷兩次鍊錶

node p = head;

node q;

while(p != null)else

}p = p.next;

}

8、求倒數第k個結點
//求出鍊錶長度,在求第len-k

//兩個指標,p,q p先走k步,p和q在一起走

node p = head;

node q = head;

for(int i = 0;iwhile(p!=null)

return q;

9、鍊錶的反轉
node prenode = head;

node curnode = head.next;

node temp = null;

while(curnode != null)

head.next = null;

return prenode;

10、鍊錶的中間結點
//兩個指標同時遍歷,乙個走一步,乙個走二步,走兩步的結束,走一步即為中間結點

node p = head;

node q = head;

while( p = null && q.next != null && q.next !=null)

return p;

11、鍊錶是否有環
//兩個指標同時遍歷,乙個走一步,乙個走二步,沒走一次,比較是否相同

node p = head;

node q = head;

while(p.next!=null && p!=null)

if(p == null)

if(p.next == null)

12、不知道頭指標的情況下刪除指定結點
//如果是尾結點則無法刪除

public

boolean

deletenode(node node)

//交換當前結點和後繼結點的值,並刪除後繼結點

int temp = node.data;

node.data = node.next.data;

node.next.data = temp;

node.next = node.next.next;

return

true;

}

13、判斷兩個鍊錶是否相交
//尾結點相同即相交

//求相交的第乙個結點:首先要相交。其次假設鍊錶a與鍊錶b的長度為len1,len2。如果len1>len2,則先對鍊錶a遍歷len1-len2個結點到結點p,此時結點p和鍊錶b到相交結點的距離相同,此時同時遍歷兩個相同鍊錶,遇到相同的結點即為相交結點。

單鏈表的操作

單鏈表是一種非常重要的資料結構,下面用c語言對單鏈表的操作做乙個簡單的總結 typedef struct nodenode,linklist 1 單鏈表的建立 建立乙個單鏈表,鍊錶裡面存放有十個偶數 2到20 有頭節點,頭節點不存放元素。linklist createlinklist return ...

單鏈表的操作

1.定義單鏈表的介面函式 ifndef linklist h define linklist h typedef int elemtype typedef struct node node node initnode bool addnode node head,elemtype data 頭插法 ...

單鏈表的操作

pragma once extern c list node,list link 頭插建立鍊錶 list link create list head int n 尾插法建立鍊錶 list link creat list tail int n 獲取長度 int get list length list...