Array in Data Structure

    Array

    एक Array contiguous memory locations पर stored Item का एक collection है। Array में एक ही प्रकार के Data को store किया जाता हैं

    Array ऐसा Data type (डेटा टाइप) है जिसमें एक ही नाम में एक से अधिक Values (वैल्यूज़) को स्टोर करवाया जा सकता है। 'C language' में यह सभी डेटा समान Data-Type (डेटा टाइप) का होना चाहिए।

    Array एक ऐसा data type हैं जिसमें similar data को contiguous memory locations पर स्टोर करवाया जाता हैं जब हमें एक ही प्रकार की एक से अधिक वैल्यू को स्टोर कराना होता है तो उसके लिए एक से अधिक Variables का use किया जा सकता हैं । किन्तु ऐसा करने पर उन सभी Variables को प्रयोग में लेना आसान नहीं रहता है। for Example एक Company के 100 Employees के Names को स्टोर कराने के लिए 100 वेरिएबलों का प्रयोग करना उचित नहीं है। ऐसी स्थिति में दूसरा और बेहतर विकल्प Array के रूप में सामने आता है, जिसमें एक ही Variable में एक से अधिक वैल्यू स्टोर की जा सकती है।

    इस प्रकार स्टोर सभी वैल्यूज़ को मैमोरी में contiguous या  linear में स्टोर किया जाता है। प्रत्येक वैल्यू को प्रयोग में लेने के लिए Array  के Index Number (इंडेक्स नंबर) का प्रयोग किया जाता है।  almost सभी programming languages  में यह Index Number (इंडेक्स नंबर)  Zero(0) से प्रारंभ होते हैं। 

    उदाहरण के लिए 10 Employees की id  स्टोर करने तथा 5वें Employee की id  को प्रिंट कराने के लिए 'C Language' में निम्नानुसार Statement दिए जा सकते हैं:


        int emp_id[10];
        printf("%d", emp_id[4]);    

    ऊपर दिए गए Example में [4] Index हैं हो कि 5 वें Employee के id को दर्शा रहा हैं। 

    Array in Data Structure, w3 coding club, w3codingclub

    One Dimensional Array

    One dimensional Array (वन डायमेंशनल एरे) को हम एक List के रूप में समझ सकते हैं जिसमें एक से अधिक Member होते हैं। इसे प्रयोग में लेने के लिए सिर्फ एक ही dimensional का प्रयोग किया जाता है। एरे को Declare करने के लिए प्रारूप निम्न प्रकार है:


        datatype arrayname [dimension];

    Example:-


        int marks [5];

    उपरोक्त Statement 5 Integer को Store करने के लिए Memory Allocate  करेगा। चूंकि Integer  2 byte लेता है, अतः यह Statement Memory में एक क्रम में (5*2) = 10 byte Allocate  कर देगा।

    More..........

    one Dimensional Array, w3 coding club, w3codingclub

    उपरोक्त Array के प्रथम Element को access कर के लिए हमें marks[0] तथा तीसरे Element को access कर के लिए marks[2] लिखना  होगा। इसी प्रकार Last Elements के लिए marks[4] लिखना होगा। यदि यहां पर Array के Size को N माना जाए तो N की Value 5 होगी। इस प्रकार यह कहा जा सकता है कि Array का Last Elements N-1 Index पर होता है। इसी प्रकार यह भी कहा जा सकता है कि Array का size निम्नांकित फॉर्मूले से निकाला जा सकता है:

    size = (Upper-Limit - Lower-Limit) + 1
    size = (4 - 0) + 1
    size = 5

    Array in C++

    Initialization of Array

    किसी Array में Program के Run होने के दौरान Value इनपुट में दी जा सकती हैं। इसके अतिरिक्त Array को Declare करते समय भी वैल्यूज़ दी जा सकती हैं। यह Initialization Compile Time पर किया जाता है।
    Array में value Store(वैल्यू स्टोर) करते समय यह बताना होता है कि वह वैल्यू किस index number(इंडेक्स नंबर) या क्रम पर स्टोर होगी। index number(इंडेक्स नंबर) 0(zero) से प्रारंभ होता है। उपरोक्त उदाहरण में 5 वैल्यू के लिए इंडेक्स नंबर 0,1,2,3 तथा 4 होंगे। इंडेक्स नंबर वैल्यू की एरे में position(पोजीशन) बताती है।

    इसका प्रारूप निम्नानुसार है:


        dataType arrayName[N] = {value1, value2, value3, .. . . . . . . . }

    Example:- 


        int marks[5] = {73, 79, 55, 89, 66};    

    या
       
        int marks[] = {73, 79, 55, 89, 66};    // Optional Dimension    

    Traversal of the one-dimensional array

    Array के Traversal (ट्रावर्जल) से आशय उसके सभी Elements (एलीमेंट्स) को Process करने से है। सामान्यतया, Traversal (ट्रावर्जल) में संबंधित Element को print करा दिया जाता है। एरे को ट्रावर्ज़ करने के लिए Index Number (इंडेक्स नंबर) का प्रयोग किया जाता है। इसके लिए हमें एक loop चलाना होता है, जो कि Array के lower bound से upper bound तक चलाया जाता है।

    1. Algorithm for Traversal of the one-dimensional array

    ARR[] :    Array
    LB          Lower Bound
    UB       :    UpperBound

    Traverse(Arr[])

        Step1    
        //Initialize a count
        I = LB
    Step2
        while(I<UB) repeat
            print ARR[I]
            I = I + 1
        end while
    Step3
        Stop

    Example:-


        // program to traverse Array
        #include <stdio.h>
        #include <conio.h>
        #define SIZE 100

        void traversal(int arr[], int j); // declare function
        void main()
        {
            int n, arr[SIZE];
            printf("\nEnter No. of Elements : ");
            scanf("%d", &n);

            printf("\nEnter %d Elements in Array\n", n);
            for (int i = 0; i < n; i++)
            {
                printf("Enter value for arr[%d] : ", i);
                scanf("%d", &arr[i]);
            }

            printf("\npress any key to start Traversal of Array....");
            traversal(arr, n); // Function call for Array Traversal

            getch();
        }
        void traversal(int arr[], int j) // Function Define for Array Traversal    
        {
            getch();
            for (int i = 0; i < j; i++)
            {
                printf("\narr[%d] : %d", i, arr[i]);
            }
        }

    Output:-

    Enter No. of Elements: 5

    Enter 5 Elements in Array
    Enter value for arr[0] : 9
    Enter value for arr[1] : 6
    Enter value for arr[2] : 4
    Enter value for arr[3] : 8
    Enter value for arr[4] : 1

    press any key to start Traversal of Array...
    arr[0] : 9
    arr[1] : 6
    arr[2] : 4
    arr[3] : 8
    arr[4] : 1

    Explain Example

    Array Traversal से आशय प्रत्येक Elements को visit करने से होता है। उपरोक्त Program में प्रत्येक Elements को प्रिंट करवाया गया है। इस मे पहले user से value input में लेकर Array (arr[]) में Store करवाई गई हैं तथा फिर उस को traversal() function बना कर उसे विज़िट किया गया हैं।

    Insertions Data to a 1-D Array

    Array में नया Element (एलीमेंट) Insert करने  के लिए यह पता होना चाहिए कि वह Element (एलीमेंट) Array  में किस Position पर जोड़ा जाना है। जोड़ी जाने वाली वैल्यू Array में कहां Insert करनी है, यह निम्नांकित में से किसी एक विधि से पता किया जा सकता है:

    1. यदि सीधे ही Index Number (इंडेक्स नंबर) दिया गया हो ।
    2. यह दिया गया हो कि नया एलीमेंट किस  Element (एलीमेंट)  के बाद या पहले जोड़ना है। ऐसी स्थिति में searching के माध्यम से Index Number (इंडेक्स नंबर)  ज्ञात किया  जाता हैं।

    Array में जब भी कोई नया Element (एलीमेंट) जोड़ना हो तो निम्नांकित में से कोई एक स्थिति हो सकती है:

    1. नया Element जोड़ने के लिए दी गई Position उपलब्ध हो।
    2. नया Element  जोड़ने के लिए दी गई Position उपलब्ध नहीं हो।

    Array में Data को जोड़ने के लिए Program बनाते समय Array का Size क्या रखा जाए? यह Size User अपनी आवश्यकतानुसार रख सकता है। यह Size इतना बड़ा होना चाहिए जो सामान्य आवश्यकताओं की पूर्ति कर सके। उदाहरण के लिए मानते हैं कि हमने 20 एलीमेंट की क्षमता का Array बनाया। इसमें कुल 10 Values Insert कर चुके हैं जो कि क्रमशः Index Number 0 से 9 तक पर स्थित हैं । अब यदि यूज़र Index Number 5 पर नया Element जोड़ना चाहता है तो हमें पहले Index Number 5 से लेकर 9 तक के सभी Elements को आगे Move कराना होगा। इसके लिए Index Number 9 के Element को Index Number 10 पर, 8 के एलीमेंट को Index Number 9 पर, 7 के एलीमेंट को Index Number 8 पर, तथा इसी प्रकार शेष Elements को Move कराना होगा। ऐसा कर देने के पश्चात् Index Number 4 पर नया एलीमेंट Insert किया जा सकता है।

    दूसरी तरफ यदि Array में 20 वैल्यूज़ होती तो उसमें नया एलीमेंट Insert नहीं करवाया जा सकता है।

    Inserting Elements into Array at the Beginning

    मान लेते हैं कि Array की क्षमता 10 एलीमेंट (integers) की है, जिसमें 6 Element पहले से Insert किए  जा चुके हैं।

    2 9 7 8 27 12
    [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]

    इसमें हमें प्रारंभ में वैल्यू 108 Insert करनी है। प्रारंभ से आशय Index Number 0 से है। चूंकि उपरोक्त उदाहरण में एरArray में जगह खाली है, अतः नई वैल्यू Insert करने के लिए हमें सभी एलीमेंट्स को एक-एक Index आगे Move करना होगा।

    2 9 7 8 27 12
    [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]

    इस प्रकार खाली हुए Index Number पर न्यू value Insert करवाई जा सकती हैं।  

    108 2 9 7 8 27 12
    [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]

    2. Algorithm for inserting elements into an array at the beginning

    ARR[]    :     Array, जिंसमे value Insert की जानी हैं।
    Val       :     Value, जो Insert की जानी हैं।
    N        :     Array में मौजूद Elements की संख्या
    SIZE     :     Size of Array

    InsertAtBeginning(ARR[], VAL,N,SIZE)

    Step 1:
        if (N >= SIZE) then
            print "Error ....."    
            return
        end if
    Step 2:
        I = N
     Step 3:
        while (I > 0) repeat
            ARR[I] = ARR[I - 1]
            I = I - 1
    Step 4:
        ARR[0] = VAL
    Step 5:
        N = N + 1
    Step 6:
        stop

    Example:-


        // Inserting Elements into Array at the Beginning
        #include <stdio.h>
        #include <conio.h>
        #define size 30

        // Declare a Function for traversal of Array
        void traval(int arr[]);

        // Declare a Function for insert Value in Array
        int addval(int val, int arr[]);

        int j, N;
        void main()
        {
            int i, arr[size], c, newValue;
            printf("Number of Elements in Array : ");
            scanf("%d", &N);
            for (i = 0; i < N; i++)
            {
                printf("Enter value of arr[%d] : ", i);
                scanf("%d", &arr[i]);
            }
            printf("\nBefore inserting New Elements \n");
            traval(arr);

            printf("\nEnter New value In  Array :  ");
            scanf("%d", &newValue);
            c = addval(newValue, arr);

            printf("\nAfter inserting New Elements \n");
            traval(arr);
            getch();
        }

        // Define a Function for traversal of Array
        void traval(int arr[])
        {
            for (j = 0; j < N; j++)
            {
                printf("\narr[%d] : %d", j, arr[j]);
            }
        }

        // Define a Function for insert Value in Array
        int addval(int val, int arr[])
        {
            if (N >= size)
            {
                printf("\nError New Element cannot Insert in Array");
                return 0;
            }
            else
            {
                for (j = N; j > 0; j--)
                {
                    arr[j] = arr[j - 1];
                }
                arr[0] = val;
                N++;
                return 1;
            }
        }

    Output:-

    Number of Elements in Array: 5
    Enter value of arr[0] : 2
    Enter value of arr[1] : 1
    Enter value of arr[2] : 3
    Enter value of arr[3] : 4
    Enter value of arr[4] : 6

    Before inserting New Elements   
    arr[0] : 2
    arr[1] : 1
    arr[2] : 3
    arr[3] : 4
    arr[4] : 6

    Enter New Value In  Array:  23

    After inserting New Elements 
    arr[0] : 23
    arr[1] : 2
    arr[2] : 1
    arr[3] : 3
    arr[4] : 4
    arr[5] : 6

    Inserting Elements into Array at the End

    Array के End में Value Insert करने के लिए Data को Move कराने की आवश्यकता नहीं होती है। उदाहरण के लिए मान लेते हैं कि Array की max size 10 Integers की है, जिसमें 6 एलीमेंट पहले से दिए जा चुके हैं।

    2 9 7 8 27 12
    [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]

    इसमें हमें End में value 108 Insert करनी है। इसके लिए हमें यह जानना आवश्यक है कि Array में End Element का Index Number (इंडेक्स नंबर) क्या है, ताकि हम सही Index Number (इंडेक्स नंबर) पर नया एलीमेंट जोड़ सकें। इसके साथ ही हमें यह भी check होगा कि Array नया Elements जोड़ने के लिए Array में Space भी है या नहीं। नई वैल्यू को Array में जोड़ने के पश्चात् Array निम्नानुसार होगाः

    2 9 7 8 27 12 108
    [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]

    Array में नया Element जोड़ देने के पश्चात् Array के Last Index में भी एक से Increment(इंक्रीमेंट) करना होगा। उपरोक्त उदाहरण में नया Element (एलीमेंट) जोड़ने से पूर्व Element (एलीमेंट) last Element  का Index 5 था. इसमें नया Element जोड़ देने के पश्चात् इसमें Increment(इंक्रीमेंट) करते हुए 6 कर दिया जाएगा।

    3. Algorithm for inserting elements into array at the End

    ARR[]    :     Array, जिंसमे value Insert की जानी हैं।
    Val       :     Value, जो Insert की जानी हैं।
    N        :     Array में मौजूद Elements की संख्या
    SIZE     :     Size of Array

    InsertAtEnd(ARR[], val, N, SIZE)

    Step1:
        if (N >= SIZE) then
            print "Error ....."    
            return
        end if
    Step2:
        ARR[N] = VAL
    Step3:
        N = N + 1
    Step4:
        Stop

    Example:-


        // Program to insert Element at End
        #include <stdio.h>
        #include <conio.h>
        #define size 20
        int N;
        void main()
        {
            void printArray(int[]);
            int InsertAtEnd(int[], int);
            int arr[size], n, newVal, added;

            printf("\nHow many elements do you want to store in Array : ");
            scanf("%d", &N);

            printf("\nNow enter %d Elements, one-by-one : \n", N);
            for (int i = 0; i < N; i++)
            {
                printf("arr[%d] : ", i);
                scanf("%d", &arr[i]);
            }
            printf("\nBefore insertion Elements are : ");
            printArray(arr);
            printf("\nEnter element to INSERT at END : ");
            scanf("%d", &newVal);
            added = InsertAtEnd(arr, newVal);
            if (added == 1)
            {
                printf("\nElement added successfully. \n");
                printf("\nAfter insertion, Elements are: ");
                printArray(arr);
            }
            else
            {
                printf("\nERROR : Insufficient Space in Array");
            }
            getch();
        }

        void printArray(int pArr[])
        {
            for (int i = 0; i < N; i++)
            {
                printf("\n%d", pArr[i]);
            }
            printf("\n");
        }

        // variable N & 'size' are global identifier (N &SIZE)
        int InsertAtEnd(int a[], int val)
        {
            if (N >= size)
            {
                // ERROR : Array is full, so return-0, to indicate failure.
                return 0;
            }
            a[N] = val;
            N++;
            return (1);
        }

    Output:-

    How many elements do you want to store in Array: 5

    Now enter 5 Elements, one-by-one : 
    arr[0] : 3
    arr[1] : 6
    arr[2] : 4
    arr[3] : 2
    arr[4] : 1

    Before insertion Elements are :
    3
    6
    4
    2
    1

    Enter element to INSERT at END : 56
    Element added successfully.

    After insertion, Elements are:
    3
    6
    4
    2
    1
    56

    Inserting Elements into Array at Given Position

    Array में दी गई Position पर Value (वैल्यू) जोड़ने के लिए उस Position (पोज़िशन) से आगे के Data को Move कराने की आवश्यकता होती है। उदाहरण के लिए मान लेते हैं कि Array की Size 10  है, जिसमें 6 एलीमेंट पहले से दिए जा चुके हैं।

    2 9 7 8 27 12
    [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]

    यदि इसमें हमें Index Number 3 पर Element जोड़ना है तो Index Number 3 सहित उसके बाद की सभी वैल्यूज़ को आगे Move करना होगा ।

    297
    82712
    [0][1][2][3][4][5][6][7][8][9]

    इसके बाद Index Number 3 पर निम्नानुसार New Element Insert किया जा सकता है:

    29710882712
    [0][1][2][3][4][5][6][7][8][9]

    3. Algorithm for inserting elements into the array at the Given Position 

    ARR[]    :     Array, जिंसमे value Insert की जानी हैं।
    Val      :     Value, जो Insert की जानी हैं।
    IND      :Index Number, जहाँ पर value insert की जानी हैं। 
    N        :     Array में मौजूद Elements की संख्या
    SIZE     :    Size of Array

    InsertAtPos(ARR[], VAL, IND, N, SIZE)

    Step1:
        if(N >= SIZE) then
            print "Error...."
            return
        end if
    Step2:
        I = N
    Step3:
        while(I > IND) repeat
            ARR[I] = ARR[I - 1]
            I = I - 1
        end while
    Step4:
        ARR[IND] = VAL
    Step5:
        N = N + 1
    Step6:
        Stop

    Example:-


        // Program to insert Element at given position
        #include <stdio.h>
        #include <conio.h>
        #define size 20
        int N;
        void main()
        {
            void printArray(int[]);
            int InsertAtGivenPotion(int[], int, int);
            int arr[size], n, newVal, newInd, added;

            printf("\nHow many elements do you want to store in Array : ");
            scanf("%d", &N);

            printf("\nNow enter %d Elements, one by one : \n", N);
            for (int i = 0; i < N; i++)
            {
                printf("arr[%d] : ", i);
                scanf("%d", &arr[i]);
            }
            printf("\nBefore insertion, Elements are : ");
            printArray(arr);

            printf("\nEnter New element to INSERT : ");
            scanf("%d", &newVal);

            printf("\nEnter Index Number of new value : ");
            scanf("%d", &newInd);

            added = InsertAtGivenPotion(arr, newVal, newInd);
            if (added == 1)
            {
                printf("\nElement added successfully. \n");
                printf("\nAfter insertion, the Elements are: ");
                printArray(arr);
            }
            else
            {
                printf("\nERROR : Insufficient Space in Array");
            }
            getch();
        }

        void printArray(int pArr[])
        {
            for (int i = 0; i < N; i++)
            {
                printf("\n%d", pArr[i]);
            }
            printf("\n");
        }

        // variable N & 'size' are global identifier (N &Size)
        int InsertAtGivenPotion(int a[], int val, int indexNum)
        {
            if (N >= size)
            {
                // ERROR : Array is full, so return-0, to indicate failure.
                return 0;
            }
            for (int i = N; i > indexNum; i--)
            {
                a[i] = a[i - 1];
            }
            a[indexNum] = val;
            N++;        // Total Number of Elements increased.
            return (1); // return-1 indicates success.
        }

    Output:-

    How many elements do you want to store in Array: 5
    Now enter 5 Elements, one by one:
    arr[0] : 6
    arr[1] : 5
    arr[2] : 4
    arr[3] : 9
    arr[4] : 3

    Before insertion, the Elements are :
    6
    5
    4
    9
    3

    Enter New element to INSERT: 12

    Enter Index Number of new value: 2

    Element added successfully.

    After insertion, the Elements are:
    6
    5
    12
    4
    9
    3

    Deletion of an element from Array:-

    Array से किसी Element को Delete करने का कार्य भी तीन प्रकार से किया जा सकता है:

    1. Array के शुरूआत से Element Delete करना
    2. Array के अंत से Element Delete करना
    3. दी गई Position से Element Delete करना

    जब भी Array से किसी Array को Delete किया जाता है तो Array में रखे गए Elements की संख्या 1 से घटा दी जाती है।

    जब किसी Element को Array  से Delete किया जाता है तो प्रत्येक स्थिति में, Delete किए गए एलीमें Elements की Position पर उसके बाद वाले Elements को Move कर दिया जाता है। यह प्रक्रिया में Last Element  तक चलती है। उदाहरण के लिए यदि Array निम्नानुसार है:

    2 9 7 8 27 12
    [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]

    तथा इसमें से 0 Index  के Element को Delete किया जाना है तो  0 Index पर  Index 1 की Value, तथा Index 2 पर Index 3 की value को Store करना पड़ेगा। यही प्रक्रिया Last Element तक चलेगी। इसके पश्चात् Array  निम्नानुसार हो जाएगाः

    9782712
    [0][1][2][3][4][5][6][7][8][9]

    इसी प्रकार यदि दी गई Position (पोज़िशन) से Element (एलीमेंट) को Delete किया जाना है तो उपरोक्त कार्य Index 0 से Start करने की बजाए दिए गए  Index (Position) से start करना होगा। और यदि Element को अंत से Delete किया जाना है तो कोई भी Move Operation  नहीं किया जाएगा।

    Delete an element from the beginning of the array

    Algorithm:-

    ARR[] :    Array जिसमें से  Element Delete करना हैं। 
    N     :     total Element in Array

    DeleFromStart(ARR[], N)

    Step1:
        // initialize a counter
        I = 0
    Step2:
        while(I < N) repeat
            ARR[I] = ARR[I + 1]
            I = I + 1
        end while
    Step3:
        N = N - 1
    Step4:
        Stop

    Example:-


        // Function to delete element from start
        void DeleteFromStart(int arr[], int n){
            int i = 0;
            while (i < n)
            {
                arr[i] = arr[i + 1];
                i = i + 1;
            }
            n--;    //totale number of element declared    
           
        }

    Delete an element from the given position

    Algorithm:-

    ARR[] :    Array जिसमें से  Element Delete करना हैं। 
    N     :     total Element in Array

    DeleAtGivenPosition(ARR[],  IND, N)

    Step1:
        // initialize a counter
        I = IND
    Step2:
        while(I < N) repeat
            ARR[I] = ARR[I + 1]
            I = I + 1
        end while
    Step3:
        N = N - 1
    Step4:
        Stop

    Example:-


        // Function to delete element from Given Position
        void DeleteAtGivenPosition(int arr[], int n, int ind){
            int i = ind;
            while (i < n)
            {
                arr[i] = arr[i + 1];
                i = i + 1;
            }
            n--;    //totale number of element declared    
        }

    Delete an element from the end of Array

    Algorithm:-

    ARR[] :    Array जिसमें से  Element Delete करना हैं। 
    N     :     total Element in Array

    DeleFromStart(ARR[], N)

    Step1:
        // initialize a counter
        ARR[N - 1] = 0;
    Step3:
        N = N - 1
    Step4:
        Stop

    Example:-


        // Function to delete element from end
        void DeleteFromEnd(int arr[], int n){
            arr[n - 1] = 0;
            n--; // totle number of element declared
        }
       

    Post a Comment

    0 Comments