鍊錶結點結構如下**:
class node
@override
public string tostring()
public node next;
}
計算鍊錶的長度。
列印出煉表中倒數第k個結點內容。
把鍊錶倒轉或者逆序。
鍊錶倒序列印但不改變鍊錶的結構
按照鍊錶中的資料大小順序合併兩個鍊錶
public class ******linkedlistexercises
//1. 計算鍊錶的長度。
public static int getlength(node node)
return len;
}// 2. 列印出煉表中倒數第k個結點內容。
public static void reciprocal(node node, int k)
int len = getlength(node);// 取鍊錶長度
if (k > len || k <= 0)
int count = 1, num = len - k + 1;// 倒數k個就是正數len-k+1 個
node curnode = node;
while (curnode != null)
curnode = curnode.next;
count++;
} }public static void showlist(node node)
system.out.println(temp);
temp = temp.next;
} }//3. 把鍊錶倒轉或者逆序。
/** 鍊錶反轉 方法1思想:遍歷原來的鍊錶 然後採用頭插法的方式將每次遍歷出 的鍊錶新建結點插入新的鍊錶中
*/ public static node reverse1(node node)
node curnode = node, head = null;//使用頭節點
while (curnode != null) else
curnode = curnode.next;
} return head;
} /** 鍊錶反轉 方法1思想:遍歷原來的鍊錶 然後採用頭插法的方式將每次遍歷出 的鍊錶插入新的鍊錶中
*/ // 鍊錶反轉 方法2
public static node reverse2(node node)
node curnode = node, head = new node(0);
node next = null;
while (curnode != null)
return head.next;
}// 4. 鍊錶倒序列印但不改變鍊錶的結構(採用壓棧的方式)
public static void inversionshow(node node)
nodestack.add(temp);//壓棧
k++;
temp = temp.next;
} while (!nodestack.isempty())
} //5. 按照鍊錶中的資料大小順序合併兩個鍊錶
public static node mergenodes(node node1, node node2)
node tempnode = null, temp1 = node1, temp2 = node2;//tempnode 為中間變數值
node head = null, tail = null;//採用尾插法
while (true) else if (temp1 == null && temp2 != null) else if (temp1 != null && temp2 == null) else else if (temp1.num < temp2.num) else
}if (head == null) else
} return head;
}}
單鏈表相關習題
設定乙個臨時變數來當作計數器。然後對整個鍊錶進行遍歷來數出有效節點的個數。public intgetlength length temp temp.next return length 也可以直接使用whil來判斷進行條件。public intgetlength return length 解決這個...
單鏈表練習題
題目一 假設有兩個按元素值遞增有序排列的線性表 a 和 b,均以單鏈表作儲存結構,請編寫演算法將 a 表和 b 表歸併成乙個按元素值遞減有序 即非遞增有序,允許表中含有值相同的元素 排列的線性表 c,並要求利用原表 即 a 表和 b 表 的結點空間構造 c 表。演算法 誰的值小誰就先插入鍊錶c中,插...
單鏈表相關操作
這是自己寫的最長的一次 了 在機房敲了一天。以前一直用list來水鍊錶的題 這次終於體會到痛苦了 include include include include include include using namespace std typedef struct node 單鏈表 s,list vo...