Beste mede tweakers,
Ik zoek jullie hulp voor mijn probleem. Door mijn docent programmeren is het aangeraden om eens uit te zoeken hoe een double linked list werkt, en deze vervolgens uit te programmeren zodat ik een voorsprong kan op bouwen voor komend jaar aangezien we dan een binary tree moeten uit programmeren om zo kennis over algoritmes op te doen.
In theorie lijkt de double linked list helemaal niet zo moeilijk, maar in de praktijk valt het toch wel een stukje tegen. De eerste 2 nodes gingen vrij makkelijk omdat ik de logica hiervan zag
Mijn probleem waar ik tegen aan loop is dat ik niet hoe ik nou kan zien of een getal achter gezet moet worden(hind) of voor gezet moet worden (fore) of ergens tussen gezet moet worden (tween)
Wat ik van plan ben te doen is 2 listboxjes, 1 met random getallen en de ander met de door de linked list gesorteerde uitkomst.
Ik hoop dat iemand de moeite wil en zou kunnen nemen om mij met dit probleem te helpen.
Hier mijn klasse cnode
Hier onder mijn implementatie van c# double linked list.
Ik zoek jullie hulp voor mijn probleem. Door mijn docent programmeren is het aangeraden om eens uit te zoeken hoe een double linked list werkt, en deze vervolgens uit te programmeren zodat ik een voorsprong kan op bouwen voor komend jaar aangezien we dan een binary tree moeten uit programmeren om zo kennis over algoritmes op te doen.
In theorie lijkt de double linked list helemaal niet zo moeilijk, maar in de praktijk valt het toch wel een stukje tegen. De eerste 2 nodes gingen vrij makkelijk omdat ik de logica hiervan zag
Mijn probleem waar ik tegen aan loop is dat ik niet hoe ik nou kan zien of een getal achter gezet moet worden(hind) of voor gezet moet worden (fore) of ergens tussen gezet moet worden (tween)
Wat ik van plan ben te doen is 2 listboxjes, 1 met random getallen en de ander met de door de linked list gesorteerde uitkomst.
Ik hoop dat iemand de moeite wil en zou kunnen nemen om mij met dit probleem te helpen.
Hier mijn klasse cnode
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| class cNode { public static cNode[] nar; public cNode pL, pR; public int pw; public static cNode v,m,a; public cNode(cNode L, int w, cNode R) { pL = L; pR = R; pw = w; } public static void mTween(int x) { //nog verder uit te programeren } public static void mFore(int x) { m.pL = nar[x]; nar[x].pR = m; v = nar[x]; } public static void mHind(int x) { m.pR = nar[x]; nar[x].pL = m; } } |
Hier onder mijn implementatie van c# double linked list.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
| //clear zooi lbU.Items.Clear(); lbS.Items.Clear(); //WAT TE DOEN //vul linker random Random r = new Random(); int n = 4; for (int T = 0; T < n; T++) { lbU.Items.Add(r.Next(0, 10)); } //make dllist en voeg alle items in cNode.nar = new cNode[n]; //MAAK nulde NODE (VOORSTE) cNode.nar[0] = new cNode(null, (int)lbU.Items[0], null); cNode.v = cNode.nar[0]; cNode.m = cNode.v; cNode.a = cNode.v; //rest nodes aanmaken en plaatsen //maak node 1 int tpw = (int)lbU.Items[1]; cNode.nar[1] = new cNode(null,tpw, null); //fore, hind if (tpw > cNode.v.pw) { //groter cNode.mHind(1); } else { //kleiner of gelijk cNode.mFore(1); } //loop langs rest //2e en verder for (int i = 2; i < n; i++) { int pw = (int)lbU.Items[i]; cNode.nar[i] = new cNode(null, (int)lbU.Items[i], null); while (cNode.m.pR != null) { if (pw > cNode.m.pw && cNode.m.pR != null) { cNode.m = cNode.m.pR; } } } //****** //uitlezen; for (cNode.m = cNode.v; cNode.m.pR != null; cNode.m = cNode.m.pR) { lbS.Items.Add(cNode.m.pw); } lbS.Items.Add(cNode.m.pw); |