Οι γραμμικές δομές δεδομένων είναι δομές στις οποίες τα στοιχεία είναι διατεταγμένα σε μια γραμμική ακολουθία. Κάθε στοιχείο (εκτός από το πρώτο και το τελευταίο) έχει ένα προηγούμενο και ένα επόμενο στοιχείο. Οι βασικότερες γραμμικές δομές δεδομένων είναι:
Κάθε μια από αυτές τις δομές έχει τα δικά της πλεονεκτήματα και μειονεκτήματα, και χρησιμοποιείται ανάλογα με τις ανάγκες του προβλήματος.
A[5]).ΠΙΝΑΚΑΣ Α[10] (δημιουργεί έναν πίνακα με 10 στοιχεία).ΠΡΟΓΡΑΜΜΑ Πίνακας_Παραδειγμα
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α[10], i
ΑΡΧΗ
! Αρχικοποίηση του πίνακα
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10
Α[i] ← i * 2
ΓΡΑΨΕ 'A[', i, '] = ', Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Η στοίβα ακολουθεί την αρχή LIFO (Last-In, First-Out). Το τελευταίο στοιχείο που εισάγεται είναι το πρώτο που εξέρχεται.
top).top).ΠΡΟΓΡΑΜΜΑ Στοίβα_Παραδειγμα
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Στοίβα[10], Κορυφή, Επιλογή, Στοιχείο
ΑΡΧΗ
Κορυφή ← 0
ΓΡΑΨΕ '1: Ωθήση, 2: Απώθηση, 3: Έξοδος'
ΔΙΑΒΑΣΕ Επιλογή
ΟΣΟ Επιλογή ≠ 3 ΕΠΑΝΑΛΑΒΕ
ΑΝ Επιλογή = 1 ΤΟΤΕ
ΑΝ Κορυφή < 10 ΤΟΤΕ
ΓΡΑΨΕ 'Δώσε στοιχείο: '
ΔΙΑΒΑΣΕ Στοιχείο
Κορυφή ← Κορυφή + 1
Στοίβα[Κορυφή] ← Στοιχείο
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Υπερχείλιση!'
ΤΕΛΟΣ_ΑΝ
ΑΛΛΙΩΣ_ΑΝ Επιλογή = 2 ΤΟΤΕ
ΑΝ Κορυφή > 0 ΤΟΤΕ
ΓΡΑΨΕ 'Εξήχθη: ', Στοίβα[Κορυφή]
Κορυφή ← Κορυφή - 1
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Υποχείλιση!'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΓΡΑΨΕ '1: Ωθήση, 2: Απώθηση, 3: Έξοδος'
ΔΙΑΒΑΣΕ Επιλογή
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Η ουρά ακολουθεί την αρχή FIFO (First-In, First-Out). Το πρώτο στοιχείο που εισάγεται είναι το πρώτο που εξέρχεται.
Η ουρά χρησιμοποιεί δύο δείκτες:
ΠΡΟΓΡΑΜΜΑ Ουρά_Παραδειγμα
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Ουρά[10], Front, Rear, Επιλογή, Στοιχείο
ΑΡΧΗ
Front ← 1
Rear ← 0
ΓΡΑΨΕ '1: Εισαγωγή, 2: Αφαίρεση, 3: Έξοδος'
ΔΙΑΒΑΣΕ Επιλογή
ΟΣΟ Επιλογή ≠ 3 ΕΠΑΝΑΛΑΒΕ
ΑΝ Επιλογή = 1 ΤΟΤΕ
ΑΝ Rear < 10 ΤΟΤΕ
ΓΡΑΨΕ 'Δώσε στοιχείο: '
ΔΙΑΒΑΣΕ Στοιχείο
Rear ← Rear + 1
Ουρά[Rear] ← Στοιχείο
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Υπερχείλιση!'
ΤΕΛΟΣ_ΑΝ
ΑΛΛΙΩΣ_ΑΝ Επιλογή = 2 ΤΟΤΕ
ΑΝ Front <= Rear ΤΟΤΕ
ΓΡΑΨΕ 'Εξήχθη: ', Ουρά[Front]
Front ← Front + 1
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Υποχείλιση!'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΓΡΑΨΕ '1: Εισαγωγή, 2: Αφαίρεση, 3: Έξοδος'
ΔΙΑΒΑΣΕ Επιλογή
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Παρακάτω παρουσιάζεται μια σύγκριση των βασικών γραμμικών δομών δεδομένων:
| Χαρακτηριστικό | Πίνακας (Array) | Στοίβα (Stack) | Ουρά (Queue) | Συνδεδεμένη Λίστα (Linked List) |
|---|---|---|---|---|
| Δυναμικό Μέγεθος | ❌ Όχι | ❌ Όχι | ❌ Όχι | ✅ Ναι |
| Πρόσβαση | ✅ Άμεση (O(1)) | ❌ Μόνο στην κορυφή | ❌ Μόνο στην αρχή και το τέλος | ❌ Διαδοχική (O(n)) |
| Εισαγωγή/Αφαίρεση στην Αρχή | ❌ Δυσκολία (O(n)) | ❌ Όχι εφαρμόσιμο | ✅ Ναι (Dequeue) | ✅ Ναι (O(1)) |
| Εισαγωγή/Αφαίρεση στο Τέλος | ✅ Ναι (O(1)) | ✅ Ναι (Push/Pop) | ✅ Ναι (Enqueue) | ✅ Ναι (O(1)) |
| Μνήμη | ✅ Συνεχόμενη | ✅ Συνεχόμενη | ✅ Συνεχόμενη | ❌ Διάσπαρτη |
| Χρήσεις | Αποθήκευση στατικών δεδομένων | Αναδρομή, Undo/Redo | Ουρές αναμονής, BFS | Δυναμικές λίστες, DFS |