有乙個帶頭結點的單鏈表l=,設計乙個演算法將其拆分成兩個帶頭結點的單鏈表l1和l2,其中l1=,l2=,要求l1使用l的頭結點。
利用原單鏈表l中的所有結點通過改變指標域重組成兩個單鏈表l1,l2. 其中l1的相對順序與l相同,所以採用頭插法建立單鏈表l1. l2的相對順序與l相反,所以採用尾插法。
#include #include #include using namespace std;
typedef struct node
linknode;
void creat(linknode *&l,char *a,long n)
p->next = null;
}void split(linknode *&l,linknode *&l1,linknode *&l2)
r->next = null;
}void print(linknode *l)
cout<>str;
linknode *l=null,*l1=null,*l2=null;
creat(l, str, strlen(str));
split(l, l1, l2);
print(l1);
print(l2);
return 0;
}
將單鏈表拆分為兩個特定的單鏈表
題目要求 有乙個帶頭結點的單鏈表l 設計乙個演算法將其拆分成 兩個帶頭結點的單鏈表l1和l2,其中l1 l2 思路 l1用尾插法構建,l2用頭插法構建。includeusing namespace std typedef char elemtype 定義單鏈表結構體 struct linklist ...
將兩個單鏈表合併成乙個有序單鏈表
3.10 4.將兩個單鏈表合併成乙個有序單鏈表 由於以前初學c 時所寫的 不堪入目,不符合規範性,完整性和魯棒性,於是今日重寫其核心演算法以警示自己。node merge node p1head,node p2head else return pmergedhead 思路 因為鍊錶可以由結點輕鬆構造...
線性時間查詢兩個單鏈表的交叉結點
為了解決本道題有多種解法。方法 1 先將兩個單鏈表la和lb分別遍歷一遍,獲得各自的長度為m和n,假設m比n大,那麼先對la表從頭遍歷m n個元素。接下來兩個表同時遍歷,若兩個指標指向同乙個結點,則停止。返回指向該結點的任一指標。方法 2 先將兩個單鏈表la和lb分別遍歷一遍,分別將各自的指標儲存在...