ุฎู„ูŠู†ุง ุงู„ุฃูˆู„ ู†ูู‡ู… ูŠุนู†ูŠ ุฅูŠู‡ ุฃุตู„ู‹ุง Data StructureุŸ

What is Data Structure?

ุจุจุณุงุทุฉุŒ ุฒูŠ ู…ุง ุงู„ุงุณู… ุจูŠู‚ูˆู„ุŒ ุฏูŠ ุทุฑูŠู‚ุฉ ุจู†ู†ุธู… ุจูŠู‡ุง ุงู„ุฏุงุชุง.

ุจุณ ู‡ู†ุง ุจู†ุชูƒู„ู… ุนู† ุงู„ูƒู…ุจูŠูˆุชุฑุŒ ูุฅุญู†ุง ุจู†ู†ุธู… ุงู„ุฏุงุชุง ุฏูŠ ุฌูˆู‡ ุงู„ู€ RAM.

RAM

ุฎู„ูŠู†ุง ู†ุดูˆู ู…ุซุงู„ ุนุดุงู† ู†ูู‡ู… ุฃูƒุชุฑ.

ุงู„ู€ RAM ุฏูŠ ู‡ูŠ ุงู„ู…ูƒุงู† ุงู„ู„ูŠ ุจุชุชุฎุฒู† ููŠู‡ ูƒู„ ุงู„ู€ variables ุจุชุงุนุชู†ุง.

ูˆุงุญู†ุง ุจู†ูƒุชุจ ุงู„ู€ code ูˆุจู†ุณุชุฎุฏู… ุงู„ู€ array data structuresุŒ ุงู„ุฏุงุชุง ุฏูŠ ุจุชุชุฎุฒู† ููŠ ุงู„ู€ RAM.

ูŠุนู†ูŠ ู„ูˆ ุนู†ุฏู†ุง array ููŠู‡ ู…ุซู„ู‹ุง ุงู„ุฃุฑู‚ุงู… ุฏูŠ: 1ุŒ 3ุŒ 5. ุฏูŠ ุงู„ู…ุนู„ูˆู…ุงุช ุงู„ู„ูŠ ุนุงูŠุฒูŠู† ู†ุฎุฒู†ู‡ุง.

ุทูŠุจ ุฅุฒุงูŠ ู‡ู†ุฎุฒู†ู‡ุง ููŠ ุงู„ู€ RAMุŸ

Bytes and Bits

ุฃูˆู„ู‹ุงุŒ ุงู„ู€ RAM ุจุชุชู‚ุงุณ ุจุงู„ู€ Byte.

ุนุงุฏูŠ ุฌุฏู‹ุง ุฅู† ุฌู‡ุงุฒ ุงู„ูƒู…ุจูŠูˆุชุฑ ูŠูƒูˆู† ููŠู‡ ู…ุซู„ู‹ุง 8 GB ู…ู† ุงู„ู€ RAM.

ุงู„ู€ Gigabyte (ุฃูˆ GB) ุฏูŠ ุชู‚ุฑูŠุจู‹ุง 10^9 Bytesโ€ฆ ูŠุนู†ูŠ ุญูˆุงู„ูŠ ู…ู„ูŠุงุฑ Byte.

ุงู„ุณุคุงู„ ุงู„ุฃู‡ู… ุจู‚ู‰ุŒ ุฅูŠู‡ ู‡ูˆ ุงู„ู€ Byte ุฏู‡ุŸ

ุงู„ู€ Byte ุจุจุณุงุทุฉ ุนุจุงุฑุฉ ุนู† 8 bits.

ุทูŠุจุŒ ูˆุฅูŠู‡ ู‡ูˆ ุงู„ู€ BitุŸ

ุงู„ู€ Bit ู…ู…ูƒู† ุชุนุชุจุฑู‡ ุฎุงู†ุฉ ุฃูˆ ู…ูƒุงู† ูŠู‚ุฏุฑ ูŠุฎุฒู† ุฑู‚ู… ูˆุงุญุฏ ุจุณุŒ ูˆุงู„ุฑู‚ู… ุฏู‡ ู„ุงุฒู… ูŠูƒูˆู† ูŠุง 0 ูŠุง 1.

ุฃูƒูŠุฏ ุณู…ุนุช ุนู† ุงู„ูƒู„ุงู… ุฏู‡ ู‚ุจู„ ูƒุฏู‡ุŒ ุงู„ู€ 0 ูˆุงู„ู€ 1 ุฏูŠ ู„ุบุฉ ุงู„ูƒู…ุจูŠูˆุชุฑ.

ุฒูŠ ู…ุง ุงู†ุช ุดุงูŠูุŒ ุงู„ู…ูˆุถูˆุน ู…ุงุดูŠ ุจุงู„ุชุฑุชูŠุจ:

  • ุงู„ู€ bits ุงู„ูุฑุฏูŠุฉ ุจุชูƒูˆู† Bytes.
  • ุงู„ู€ Bytes ุจุชูƒูˆู† ุงู„ู€ RAM.
  • ุงู„ู€ RAM ุจู†ุณุชุฎุฏู…ู‡ุง ุนุดุงู† ู†ุฎุฒู† Data Structure ู…ุชู‚ุฏู…ุฉ.

Storing Integers in RAM

ู†ุฑุฌุน ู„ู…ุซุงู„ ุงู„ู€ Array ุจุชุงุนู†ุง ุงู„ู„ูŠ ููŠู‡ ุงู„ุฃุฑู‚ุงู… 1ุŒ 3ุŒ 5. ุฏูŠ ุจู†ุณู…ูŠู‡ุง array of integers.

ู„ุณุฉ ุทุจุนู‹ุง ู…ุนุฑูู†ุงุด ุจุงู„ุธุจุท ุฅูŠู‡ ู‡ูˆ ุงู„ู€ ArrayุŒ ุจุณ ุฎู„ูŠู†ุง ู†ูƒู…ู„.

ุฅุฒุงูŠ ู‡ู†ุฎุฒู† ุฑู‚ู… ุฒูŠ ุงู„ู€ Integer ุฏู‡ (ู…ุซู„ู‹ุง ุฑู‚ู… 1) ููŠ ุงู„ู€ RAMุŸ

ู„ุงุฒู… ู†ุฎุฒู†ู‡ ุนู† ุทุฑูŠู‚ ุงู„ู€ Bytes.

ููŠ ุงู„ุบุงู„ุจุŒ ุงู„ู€ Integer ุงู„ูˆุงุญุฏ ู…ุด ุจูŠุชุฎุฒู† ููŠ Byte ูˆุงุญุฏ ุจุณุŒ ู„ุฃุŒ ุฏู‡ ุนุงุฏุฉ ุจูŠุงุฎุฏ 4 Bytes.

ูŠุนู†ูŠ ุจุฏู„ ู…ุง ู†ุณุชุฎุฏู… 8 bits ุจุณุŒ ู‡ู†ุณุชุฎุฏู… 32 bits.

ุฅุฒุงูŠ ุจู‚ู‰ ู‡ู†ู…ุซู„ ุฑู‚ู… 1 ุจุงุณุชุฎุฏุงู… ุงู„ู€ 32 bits ุฏูˆู„ุŸ

ุญุงู„ูŠู‹ุงุŒ ู…ู…ูƒู† ู†ู‚ูˆู„ ุฅู†ู‡ุง ู‡ุชูƒูˆู† 31 ุตูุฑ (0) ูˆุฑุง ุจุนุถุŒ ูˆููŠ ุงู„ุขุฎุฑ ุฎุงู„ุต ู‡ู†ุญุท ูˆุงุญุฏ (1). 0000000000000000..00001

ุงู„ู…ู‡ู… ู‡ู†ุง ุฅู†ู†ุง ู†ุนุฑู ุฅู† ููŠู‡ ุทุฑูŠู‚ุฉ ู†ุงุฎุฏ ุจูŠู‡ุง ุงู„ุฑู‚ู… (ุฒูŠ 1)ุŒ ู†ู…ุซู„ู‡ ููŠ ุดูƒู„ BytesุŒ ูˆุจุนุฏูŠู† ู†ุญุทู‡ ููŠ ุงู„ู€ RAM.

Addresses in RAM

ุงู„ู€ RAM ู…ู…ูƒู† ู†ุชุฎูŠู„ู‡ุง ูƒุฃู†ู‡ุง ู‚ุทุนุฉ ูˆุงุญุฏุฉ ู…ุชุตู„ุฉ ู…ู† ุงู„ุฏุงุชุงุŒ ุจุณ ู‡ูŠ ูƒู…ุงู† ู„ูŠู‡ุง ู…ูƒูˆู†ูŠู† ุฃุณุงุณูŠูŠู†:

  1. ุงู„ู‚ูŠู… (Values): ุงู„ุฏุงุชุง ุงู„ู„ูŠ ุจู†ุฎุฒู†ู‡ุง.
  2. ุงู„ุนู†ุงูˆูŠู† (Addresses): ูƒู„ ู‚ูŠู…ุฉ ุจุชุชุฎุฒู† ููŠ ู…ูƒุงู† ุฃูˆ Memory Address ู…ุญุฏุฏ ูˆู…ุฎุชู„ู ุนู† ุบูŠุฑู‡.

ู‡ุชู„ุงุญุธ ุฅู† ุฃูˆู„ Memory Address ุจูŠูƒูˆู† 0.

Storing arrays in RAM

ู„ู…ุง ุจู†ุฎุฒู† Array ููŠ ุงู„ู€ RAMุŒ ู…ุด ุฏุงูŠู…ู‹ุง ุจู†ู‚ุฏุฑ ู†ุฎุชุงุฑ ุงู„ู…ูƒุงู† ุจุงู„ุธุจุทุŒ ุจุณ ุฃู‡ู… ู…ูŠุฒุฉ ููŠ ุงู„ู€ Arrays ุฅู†ู‡ุง ุฏุงูŠู…ู‹ุง ุจุชุชุฎุฒู† ุจุดูƒู„ contiguous.

ูŠุนู†ูŠ ุฅูŠู‡ contiguousุŸ ูŠุนู†ูŠ ุงู„ุฏุงุชุง ุจุชุงุนุชู‡ุง ุจุชูƒูˆู† ูˆุฑุง ุจุนุถู‡ุง ููŠ ุงู„ู€ RAM ู…ู† ุบูŠุฑ ุฃูŠ ููˆุงุตู„ ุฃูˆ ู…ุณุงุญุงุช ูุงุถูŠุฉ ููŠ ุงู„ู†ุต.

ูู…ุซู„ู‹ุงุŒ ู„ูˆ ุจู†ุฎุฒู† ุงู„ู€ array ุจุชุงุนู†ุง (1, 3, 5):

  • ุงู„ุฑู‚ู… 1 ู‡ูŠุชุฎุฒู† ููŠ ู…ูƒุงู† ู…ุนูŠู†.
  • ุงู„ุฑู‚ู… 3 ู‡ูŠุชุฎุฒู† ููŠ ุงู„ู…ูƒุงู† ุงู„ู„ูŠ ุจุนุฏู‡ ู…ุจุงุดุฑุฉ.
  • ุงู„ุฑู‚ู… 5 ู‡ูŠุชุฎุฒู† ููŠ ุงู„ู…ูƒุงู† ุงู„ู„ูŠ ุจุนุฏ ุงู„ู€ 3 ู…ุจุงุดุฑุฉ.

ู…ููŠุด ุญุงุฌุฉ ู‡ุชุฏุฎู„ ุจูŠู†ู‡ู….

ุทูŠุจ ู„ูˆ ูƒุฏู‡ุŒ ู„ูŠู‡ ุงู„ู€ Memory Address ุจูŠุฒูŠุฏ ุจู€ 4 ูƒู„ ู…ุฑุฉุŸ (0ุŒ 4ุŒ 8โ€ฆ) ู…ุด ุงู„ู…ูุฑูˆุถ ูŠูƒูˆู† 0ุŒ 1ุŒ 2ุŸ

ุงูุชูƒุฑ ุชุงู†ูŠ: ูƒู„ ู‚ูŠู…ุฉ (ููŠ ู…ุซุงู„ู†ุง ุฏู‡ Integer) ุจุชุงุฎุฏ 4 Bytes ุนุดุงู† ุชุชุฎุฒู†.

ูุงู„ู€ Memory Address ู‡ู†ุง ู…ุด ุจูŠุดุงูˆุฑ ุนู„ู‰ Byte ูˆุงุญุฏุŒ ู„ุฃ ุฏู‡ ุจูŠุดุงูˆุฑ ุนู„ู‰ ุจุฏุงูŠุฉ ุงู„ู€ 4 Bytes ุจุชูˆุน ูƒู„ ุฑู‚ู….

  • ุงู„ุฑู‚ู… 1 ู…ุชุฎุฒู† ููŠ ุงู„ู€ Bytes ู…ู† 0 ู„ู€ 3 (ุนู†ูˆุงู† ุงู„ุจุฏุงูŠุฉ 0).
  • ุงู„ุฑู‚ู… 3 ู…ุชุฎุฒู† ููŠ ุงู„ู€ Bytes ู…ู† 4 ู„ู€ 7 (ุนู†ูˆุงู† ุงู„ุจุฏุงูŠุฉ 4).
  • ุงู„ุฑู‚ู… 5 ู…ุชุฎุฒู† ููŠ ุงู„ู€ Bytes ู…ู† 8 ู„ู€ 11 (ุนู†ูˆุงู† ุงู„ุจุฏุงูŠุฉ 8).

Arrays is Simple

ุงู„ู…ูˆุถูˆุน ุฏู‡ ู…ู…ูƒู† ูŠุจุงู† ุจุณูŠุท ูˆู…ุจุงุดุฑุŒ ูˆู‡ูˆ ูุนู„ู‹ุง ูƒุฏู‡ ููŠ ุงู„ุบุงู„ุจ.

ูˆุฏู‡ ุงู„ุณุจุจ ุฅู† ุงู„ู€ Array ุจุชุนุชุจุฑ ุฃุจุณุท Data Structure.

ุทุฑูŠู‚ุฉ ุชุฎุฒูŠู†ู‡ุง ููŠ ุงู„ู…ูŠู…ูˆุฑูŠ (ุงู„ู€ RAM) ุดุจู‡ ุทุฑูŠู‚ุฉ ุงุณุชุฎุฏุงู…ู†ุง ู„ูŠู‡ุง ุจุงู„ุธุจุท: ุดูˆูŠุฉ ู‚ูŠู… contiguous (ูˆุฑุง ุจุนุถู‡ุง).

Ex. Storing Array of Characters in RAM

ุฅุญู†ุง ููŠ ุงู„ู…ุซุงู„ ุงู„ู„ูŠ ูุงุช ูƒู†ุง ุจู†ุฎุฒู† Integers.

ุจุณ ุฅูŠู‡ ุงู„ู„ูŠ ู‡ูŠุญุตู„ ู„ูˆ ูƒู†ุง ุจู†ุฎุฒู† Characters (ุญุฑูˆู) ุฒูŠ โ€˜Aโ€™, โ€˜Bโ€™, โ€˜Cโ€™ุŸ

ุงู„ู€ Characters ุจุชุชุฎุฒู† ุจู†ูุณ ุงู„ุทุฑูŠู‚ุฉ ุจุงู„ุธุจุท: contiguous (ูˆุฑุง ุจุนุถู‡ุง).

ู„ูƒู† ู„ุงุญุธ ุงู„ูุฑู‚ ููŠ ุงู„ู€ Memory Address:

ู‡ู†ุง ุงู„ู€ Memory Address ุจูŠุฒูŠุฏ ุจู€ 1 ุจุณ ูƒู„ ู…ุฑุฉ (0, 1, 2โ€ฆ).

ู„ูŠู‡ุŸ ุนุดุงู† ุงู„ู€ Character ุงู„ูˆุงุญุฏ ุบุงู„ุจู‹ุง ุจูŠุงุฎุฏ 1 Byte ุจุณ ุนุดุงู† ูŠุชุฎุฒู† ููŠ ุงู„ู…ูŠู…ูˆุฑูŠ (ู…ุด 4 Bytes ุฒูŠ ุงู„ู€ Integer).

ุฏู‡ ููŠ ุญุงู„ุฉ ุงู„ู€ ASCII characters ุบุงู„ุจู‹ุงุŒ ูˆุฏูŠ ุชูุตูŠู„ุฉ ู…ุด ู…ู‡ู…ุฉ ุฃูˆูŠ ุฏู„ูˆู‚ุชูŠ.

Summary

ุงู„ููƒุฑุฉ ุงู„ุฃุณุงุณูŠุฉ ู‡ูŠ: ู†ู‚ุฏุฑ ู†ุฎุฒู† ุฃูŠ ู‚ูŠู… ุจุดูƒู„ contiguous ููŠ ุงู„ู€ RAM.

ุงู„ุฃู‡ู… ุจุณ ุฅู† ุงู„ู€ Memory AddressูŠุฒูŠุฏ ุจู…ู‚ุฏุงุฑ ุญุฌู… ุงู„ู‚ูŠู…ุฉ ุงู„ู„ูŠ ุจู†ุฎุฒู†ู‡ุง (ุงู„ู€ size of the value).

ู„ูˆ ุงู„ู‚ูŠู…ุฉ ุจุชุงุฎุฏ 4 BytesุŒ ุงู„ู€ address ู‡ูŠุฒูŠุฏ ุจู€ 4. ู„ูˆ ุจุชุงุฎุฏ 1 ByteุŒ ู‡ูŠุฒูŠุฏ ุจู€ 1ุŒ ูˆู‡ูƒุฐุง.