-
Notifications
You must be signed in to change notification settings - Fork 0
/
Linked List.cpp
103 lines (98 loc) · 1.88 KB
/
Linked List.cpp
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <iostream>
using namespace std;
struct Node
{
int Bil;
Node *Kiri;
Node *Kanan;
};
Node *PAwal,*PAkhir;
void MakeList(int Bil)
{
Node *NodeBaru, *PNode;
bool Ketemu = 0;
NodeBaru = new Node;
NodeBaru->Bil=Bil;
NodeBaru->Kiri=NULL;
NodeBaru->Kanan=NULL;
if(PAwal==NULL)
{
//Link List Kosong
PAwal=NodeBaru;
PAkhir=NodeBaru;
}
else
{
//List List Tidak Kosong
if(Bil<=PAwal->Bil)
{
//Penambahan di depan
NodeBaru->Kanan=PAwal;
PAwal->Kiri=NodeBaru;
PAwal=NodeBaru;
}
else
{
//Penambahan di tengah atau di belakang
PNode=PAwal;
//Mencari Posisi node yg baru
while(!Ketemu && PNode !=NULL)
{
if(Bil <= PNode->Bil)
{
//Posisi Node sudah ditemukan
Ketemu=1;
}
else
PNode=PNode->Kanan;
}
if(Ketemu)
{
//Penambahan di tengah
NodeBaru->Kanan = PNode;
NodeBaru->Kiri = PNode->Kiri;
PNode->Kiri = NodeBaru;
PNode=NodeBaru->Kiri;
PNode->Kanan=NodeBaru;
}
else
{
//Penambahan di belakang
PAkhir->Kanan=NodeBaru;
NodeBaru->Kiri = PAkhir;
PAkhir=NodeBaru;
}
}
}
}
void DisplayList()
{
Node *PNode;
cout<<"Urut dari Kecil ke Besar"<<endl;
PNode=PAwal;
while(PNode != NULL)
{
cout<<PNode->Bil<<"\t";
PNode=PNode->Kanan;
}
cout<<endl<<endl<<"Urut dari Besar ke Kecil"<<endl;
PNode=PAkhir;
while(PNode != NULL)
{
cout<<PNode->Bil<<"\t";
PNode=PNode->Kiri;
}
}
main()
{
PAwal = NULL;
PAkhir = NULL;
MakeList(40);
MakeList(25);
MakeList(30);
MakeList(80);
MakeList(50);
MakeList(100);
MakeList(10);
DisplayList();
}