主要是把原煉表中的元素依次檢測並分類插入到新建鍊錶中實現分類,將原煉表中的元素取出插入到其他鍊錶的同時刪除元素,這樣剩下的就是另一類元素了,這樣做的空間複雜度不敢說是最低的,但從分類並儲存這點來說,空間複雜度應該算是較低的,當然這樣做是犧牲了時間複雜度的前提下;(果然還是細節重要啊,乙個j++忘記寫導致我一段時間懷疑鍊錶刪除函式是不是學錯了,當然還有乙個重點也是容易忽略的:每刪除乙個節點後應使該節點重新指向原位置,這裡我使用了乙個前驅節點來實現這個問題)
#include
#include
#include
#include
using
namespace
std;
typedef
struct node
linklist;
int check(char e)//檢查字元型別
void deleted(linklist *&a, int i)//刪除鍊錶元素
q = p->next;
p->next = q->next;
free(q);
}void insert(linklist *&l, char e)//尾插法插入元素
void displist(linklist *l)//輸出鍊錶
}int main()
p->next = null;
b = (linklist *)malloc(sizeof(linklist));
b->next = null;
c = (linklist *)malloc(sizeof(linklist));
c->next = null;
i = 0;
p = a;
q = p->next;
while (q != null)
else
if (check(q->data) == 1)
else
}displist(b);
cout
<< endl;
displist(c);
cout
<< endl;
displist(a);
cout
<< endl;
return
0;}
鍊錶的分類
從鍊錶的實現方式可以把鍊錶分為單鏈表,迴圈鍊錶,雙向鍊錶。單鏈表指的是鍊錶中的元素的指向只能指向鍊錶中的下乙個元素或者為空,元素之間不能相互指向。也就是一種線性鍊錶。雙向鍊錶即是這樣乙個有序的結點序列,每個鍊錶元素既有指向下乙個元素的指標,又有指向前乙個元素的指標,其中每個結點都有兩種指標,即lef...
學生資訊鍊錶
include include include include 本程式採用鍊錶的操作,也就是不限空間 struct node struct node listcreat 建立結構體的函式 void list add struct node head 新增學生資訊 void list show str...
1075 鍊錶元素分類
給定乙個單鏈表,請編寫程式將鍊錶元素進行分類排列,使得所有負值元素都排在非負值元素的前面,而 0,k 區間內的元素都排在大於 k 的元素前面。但每一類內部元素的順序是不能改變的。例如 給定鍊錶為 18 7 4 0 5 6 10 11 2,k 為 10,則輸出應該為 4 6 2 7 0 5 10 18...