Niz u strukturi podataka (Operacije)
⚡ Pametni sažetak
Niz u strukturi podataka pohranjuje više elemenata istog tipa podataka na susjednim memorijskim lokacijama, a svaka je dostupna putem indeksa. Ovaj vodič objašnjava koncept, zašto su nizovi važni i kako ih stvarati i raditi s njima u Python, C++i Java s primjerima.

Što je niz u strukturi podataka?
An poredak je podatkovna struktura za pohranjivanje više od jedne podatkovne stavke sličnog tipa. Stavke niza dodjeljuju se na susjednim memorijskim lokacijama, a te se lokacije nazivaju elementi niza. Ukupan broj elemenata u nizu je njegov dužina.
Svakom elementu se pristupa preko njegove pozicije, a ta referenca se naziva indeks or potpisan.
Koncept niza
Koncept dijagrama nizova
Gornji dijagram ilustrira da:
- Niz je spremnik elemenata.
- Elementi imaju određenu vrijednost i tip podataka, kao što su „ABC“, TRUE ili FALSE.
- Svaki element ima svoj indeks, koji se koristi za pristup njemu.
Bilješka:
- Elementi su pohranjeni na neprekidnim memorijskim lokacijama.
- Indeks je uvijek manji od ukupnog broja stavki niza.
- Bilo koja varijabla deklarirana kao niz može pohraniti više vrijednosti.
- Gotovo svi jezici dijele isti koncept nizova, ali se razlikuju u načinu na koji ih deklariraju i inicijaliziraju.
- Tri dijela ostaju zajednička u svim inicijalizacijama: naziv polja, elementi i tip podataka elemenata.
Sljedeći dijagram prikazuje sintaksu za deklariranje niz u Python i C++, što pokazuje da koncept ostaje isti iako se sintaksa neznatno razlikuje između jezika.
Razumijevanje sintakse nizova
- Naziv polja: potrebno za jednostavno pregledavanje kolekcije elemenata.
- Vrsta podataka: potrebno za provjeru tipova i integriteta podataka.
- Elementi: vrijednosti podataka prisutne u nizu.
Zašto su nam potrebni nizovi?
- Nizovi su idealni za pohranjivanje više vrijednosti u jednoj varijabli.
- Oni lako i brzo obrađuju mnoge vrijednosti.
- Sortiranje i pretraživanje vrijednosti je lakše s nizovima.
Stvaranje niza u Python
In Python, nizovi se razlikuju od popisa: popis može sadržavati elemente različitih tipova podataka, dok niz može sadržavati samo elemente istog tipa podataka. Python ima zaseban modul za rukovanje nizovima, nazvan array, koji morate uvesti prije upotrebe.
Bilješka: Niz mora sadržavati realne brojeve kao što su cijeli brojevi i brojevi s pomičnim zarezom; stringovi nisu dopušteni.
Sljedeći kod stvara niz cijelih brojeva u Python za pohranu stanja računa:
import array
balance = array.array('i', [300, 200, 100])
print(balance)
Načini deklariranja niza u Python
Možete deklarirati niz u Python prilikom inicijalizacije koristeći sljedeću sintaksu:
arrayName = array.array(typecode, [array_items])
Sintaksa polja u Python
- identifikator: navedite ime kao što to obično činite za varijable.
- Modul: Python ima poseban modul pod nazivom "array" koji prvo morate uvesti.
- Metoda: Modul polja ima metodu za inicijalizaciju polja, koja uzima dva argumenta - typecode i elemente.
- Kod tipa: odredite tip podataka koristeći dostupne tipske kodove (vidi tablicu u nastavku).
- Elementi: navedite elemente polja unutar uglatih zagrada, na primjer [130, 450, 103].
U donjoj tablici navedeni su kodovi tipova dostupni za podržane tipove podataka.
| Unesite kod | C Tip | Python Tip | Minimalna veličina (bajtovi) |
|---|---|---|---|
| 'b' | potpisani char | int | 1 |
| "B" | nepotpisani char | int | 1 |
| 'u' | Py_UNICODE | Unicode znak | 2 |
| 'h' | potpisan kratak | int | 2 |
| "H" | nepotpisani kratki | int | 2 |
| 'I' | potpisan međ | int | 2 |
| "Ja" | nepotpisani int | int | 2 |
| 'l' | potpisan dug | int | 4 |
| "L" | nepotpisano dugo | int | 4 |
| 'F' | plutati | plutati | 4 |
| 'd' | dvostruko | plutati | 8 |
Kako pristupiti određenoj vrijednosti niza?
Bilo kojem elementu niza možete pristupiti koristeći njegov indeks.
Sintaksa:
arrayName[indexNum]
Primjer:
balance[1]
Pristup elementu polja
Ovdje smo pristupili drugoj vrijednosti polja koristeći indeks 1. Izlaz je 200, što je druga vrijednost polja stanja.
import array
balance = array.array('i', [300, 200, 100])
print(balance[1])
Izlaz:
200
Poredak Operacije u Python
The Python Modul polja pruža odvojene funkcije za operacije s poljima. To su destruktivne metode, što znači da se modifikacija sprema u varijablu polja.
umetak
Ova operacija ubacuje jednu ili više stavki u niz na početak, kraj ili bilo koji zadani indeks. Očekuje dva argumenta: indeks i vrijednost.
arrayName.insert(index, value)
Primjer: Za umetanje nove vrijednosti odmah nakon indeksa 1 (vrijednost 200), referencirajte indeks 2 u metodi umetanja.
import array
balance = array.array('i', [300, 200, 100])
balance.insert(2, 150)
print(balance)
Izlaz:
array('i', [300, 200, 150, 100])
Izbrisati
Ova operacija briše jednu stavku iz polja po vrijednosti, prihvaćajući jedan argument. Nakon što se izvrši, stavke se preuređuju i indeksi se ponovno dodjeljuju.
arrayName.remove(value)
Primjer:
import array
balance = array.array('i', [300, 200, 150, 100])
balance.remove(150)
print(balance)
Izlaz:
array('i', [300, 200, 100])
Traži
Ova operacija traži stavku po vrijednosti i vraća njen indeks. To je nedestruktivna metoda, tako da ne mijenja vrijednosti polja.
arrayName.index(value)
Primjer:
import array
balance = array.array('i', [300, 200, 150, 100])
print(balance.index(150))
Izlaz:
2
Nadopune
Ažuriranje zamjenjuje postojeću vrijednost na danom indeksu pomoću jednostavnog operatora dodjeljivanja.Python nizovi nemaju update() metoda.)
arrayName[index] = value
Primjer: Za zamjenu 150 (na indeksu 2) sa 145:
import array
balance = array.array('i', [300, 200, 150, 100])
balance[2] = 145
print(balance)
Izlaz:
array('i', [300, 200, 145, 100])
prijeći
Možete prijeći a Python niz pomoću petlje:
import array
balance = array.array('i', [300, 200, 100])
for x in balance:
print(x)
Izlaz:
300
200
100
Stvaranje niza u C++
C++ je fleksibilniji od Python prilikom stvaranja nizova. Možete stvoriti C++ nizovi na tri načina. Sljedeći kod stvara niz cijelih brojeva u C++ za pohranu stanja računa:
#include <iostream>
using namespace std;
int main()
{
int balance[3] = { 300, 200, 100 };
for (int i = 0; i < 3; i++)
{
cout << "value of i: " << balance[i] << endl;
}
return 0;
}
Načini deklariranja niza u C++
Niz možete deklarirati na tri načina, ovisno o zahtjevima vašeg programa.
Deklaracija po veličini:
dataType arrayName[arraySize]; // e.g. int balance[3];
Deklaracija samo s elementima niza:
dataType arrayName[] = {array_items}; // e.g. int balance[] = { 300, 200, 100 };
Deklaracija po veličini i artiklima:
dataType arrayName[arraySize] = {array_items}; // e.g. int balance[3] = { 300, 200, 100 };
Kako pristupiti određenoj vrijednosti niza u C++?
Pristup elementu polja
#include <iostream>
using namespace std;
int main()
{
int balance[3] = { 300, 200, 100 };
cout << balance[1];
return 0;
}
Izlaz:
200
Poredak Operacije u C++
Za razliku od Pythonu C++ Logiku za operacije umetanja, brisanja, pretraživanja, ažuriranja i pomicanja morate sami programirati.
umetak
Logika umetanja je: proći kroz elemente niza, pomaknuti ih na veći indeks, a zatim dodati novi element na zadanom indeksu. Primjer u nastavku ima pet elemenata i ubacuje 150 odmah nakon vrijednosti 200.
#include <iostream>
#include <stdio.h>
main() {
int pos = 2;
int size = 4;
int balance[] = {300, 200, 100, 50, 0};
printf("BEFORE INSERT:\n");
for(int i = 0; i < 5; i++) {
printf("%d\n", balance[i]);
}
/* SHIFT ITEMS TO A GREATER INDEX */
for(int i = size; i >= pos; i--) {
balance[i+1] = balance[i];
}
/* INSERT VALUE AT THE DESIRED INDEX */
balance[pos] = 150;
printf("AFTER INSERT:\n");
for(int i = 0; i < 6; i++) {
printf("%d\n", balance[i]);
}
}
Poredak Operacije u Java
Napravimo program u Java koji prihvaća veličinu i vrijednosti elemenata niza od korisnika.
import java.util.Scanner;
public class AddElements {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter the size of the array");
int n = sc.nextInt();
int arr[] = new int[n];
System.out.println("Enter Elements in the array");
for(int i = 0; i < n; i++) {
arr[i] = sc.nextInt();
}
System.out.println("Elements in the array");
for(int j = 0; j < n; j++) {
System.out.print(arr[j] + " ");
}
}
}
Izmijenite element u Java Poredak
Ažuriranje elementa prema njegovom indeksu.
import java.util.Scanner;
public class ModifyElement {
public static void main(String[] args) {
int arr[] = {1, 2, 3, 4, 5};
int length = arr.length;
Scanner sc = new Scanner(System.in);
System.out.println("Array Elements Before modify");
for(int i = 0; i < length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println("\nEnter the position to change");
int pos = sc.nextInt();
System.out.println("Enter the value");
int val = sc.nextInt();
arr[pos] = val;
System.out.println("Array Elements After modify");
for(int j = 0; j < length; j++) {
System.out.print(arr[j] + " ");
}
}
}
Pristup elementima u Java Poredak
Ispišite sve elemente niza prolaskom kroz niz.
public class AccessElements {
public static void main(String[] args) {
int arr[] = {1, 2, 3, 4, 5};
int length = arr.length;
System.out.println("Array Elements are:-");
for(int i = 0; i < length; i++) {
System.out.print(arr[i] + " ");
}
}
}





