Data Structure - LIST
1 minute read
- Also known as linked list
- The linked list is a data space in which data can be added and deleted whenever necessary, without a space of a fixed size.
- Linked list is a data structure that connects data that exist in a remote place with pointer.
Basic term
- Node - Consists of data storage units (data values, pointers)
- Pointer - In each node, a space containing connection information (address) with the next or previous node, null value if there is no next node
#include <iostream>
using namespace std;
// Single linked list
struct SNode {
int value;
SNode* prev;
};
SNode* sList;
void addSList(int val) {
SNode* newNode = new SNode;
newNode->value = val;
newNode->prev = sList;
sList = newNode;
}
void printSList() {
for (SNode* iter = sList; iter != nullptr; iter = iter->prev) {
cout << iter->value << " ";
}
cout << "\n";
}
// Double linked list
struct DNode {
int value;
DNode* prev;
DNode* next;
};
DNode* head;
DNode* tail;
void addDList(int val) {
DNode* newNode = new DNode();
newNode->value = val;
newNode->next = tail;
newNode->prev = tail->prev;
tail->prev->next = newNode;
tail->prev = newNode;
}
void deletaDList(int val) {
for (DNode* iter = head->next; iter != tail; iter = iter->next) {
if (iter->value == val) {
iter->prev->next = iter->next;
iter->next->prev = iter->prev;
delete iter;
break;
}
}
}
void printDList() {
for (DNode* iter = head->next; iter != tail; iter = iter->next) {
cout << iter->value << " ";
}
cout << "\n";
}
int main() {
// SLL
sList = nullptr;
addSList(100);
addSList(200);
printSList();
// DLL
head = new DNode();
tail = new DNode();
head->prev = nullptr;
head->next = tail;
tail->prev = head;
tail->next = nullptr;
addDList(10);
addDList(20);
printDList();
deletaDList(10);
printDList();
return 0;
}