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...