प्रौद्योगिकी साझेदारी

[दत्तांशसंरचना] अनुक्रमसारणी

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

सामग्रीसूची


अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

रेखीय सारणी

वयं वार्तालापं कर्तुम् इच्छामःअनुक्रमसारणी, अस्माभिः प्रथमं रेखीयसारणीनां विषये वक्तव्यम्, यतः क्रमिकसारणीः रेखीयसारणीनां प्रकारः अस्ति ।

रेखीयसारणीयाः परिभाषा

यथा नाम सूचयति, रेखीयसारणी एकः सारणी अस्ति या रेखा इव दत्तांशं व्यवस्थितं करोति ।
यथार्थतः पङ्क्तिं चिन्तयित्वा अवगन्तुं शक्यते।

रेखीयसारणीनां लक्षणम् : १.

  • रेखीयसारणीयाः दत्तांशतत्त्वानां मध्ये क्रमः भवति ।
  • प्रथमतत्त्वं अन्तिमतत्त्वं च विहाय प्रत्येकस्य तत्त्वस्य पूर्ववर्ती उत्तराधिकारी च भवति ।

अनुक्रमसारणी

क्रमसारणीयां अनुच्छेदस्य उपयोगः भवतिभौतिकसंबोधनानि क्रमिकानि भवन्तिभण्डारण-एककाः परस्परं पार्श्वे पङ्क्तिबद्धाः जनाः इव सन्ति ।
रेखीयसंरचना या क्रमेण दत्तांशतत्त्वान् संगृह्णाति, प्रायः उपयोगेनसरणीसंग्रहण।
सरणीयां दत्तांशस्य योजनं, विलोपनं, जाँचं, परिवर्तनं च सम्पूर्णं कुर्वन्तु ।
क्रमसारणी कीदृशी दृश्यते

अनुक्रमसारणी अन्तरफलकस्य कार्यान्वयनम्

स्वयमेव क्रमसारणीं कार्यान्वयन्तु (storage int type data), क्रमसारणीं वर्गरूपेण उपयुज्यताम्, वयं केचन अन्तरफलकानि कार्यान्वयामः, अर्थात् केचनसदस्य विधिदत्तांशस्य योजनं, विलोपनं, परीक्षणं, परिवर्तनं च साक्षात्कर्तुं।

public class SeqList {
     private int[] elem;
     private int usedSize;
     // 默认构造方法
     SeqList(){   }
     // 将顺序表的底层容量设置为initcapacity
     SeqList(int initcapacity){   }
     // 新增元素,默认在数组最后新增
     public void add(int data) { }
     // 在 pos 位置新增元素
     public void add(int pos, int data) { }
     // 判定是否包含某个元素
     public boolean contains(int toFind) { return true; }
     // 查找某个元素对应的位置
     public int indexOf(int toFind) { return -1; }
     // 获取 pos 位置的元素
     public int get(int pos) { return -1; }
     // 给 pos 位置的元素设为 value
     public void set(int pos, int value) {   }
     //删除第一次出现的关键字key
     public void remove(int toRemove) {   }
     // 获取顺序表长度
     public int size() { return 0; }
     // 清空顺序表
     public void clear() {   }
     
 }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

पूर्वनिर्धारित निर्माता

पूर्वनिर्धारितरूपेण वयं प्रारम्भे १० दत्तांशस्थानानि उद्घाटयामः ।

private static final int DEFAULT_SIZE = 10;
    public SeqList() {
        this.elem= new int[DEFAULT_SIZE];
    }
  • 1
  • 2
  • 3
  • 4

अनुक्रमसारणीयाः अन्तर्निहितक्षमतां initcapacity इति सेट् कुर्वन्तु

सरणीदीर्घतायां गत्वा स्थानं उद्घाटयितुं सरणीदीर्घतायाः उपयोगं कुर्वन्तु ।

private static final int DEFAULT_SIZE = 10;
    public SeqList(int initcapacity) {
        this.elem= new int[initcapacity];
    }
  • 1
  • 2
  • 3
  • 4

पुच्छ प्लग

पूर्वनिर्धारितरूपेण सरणीयाः अन्ते नूतनाः तत्त्वानि योजिताः भवन्ति ।
विचारणीयाः बिन्दवः : १.

  • वर्तमान क्रमसारणी पूर्णा अस्ति वा इति पश्यन्तु यदि पूर्णा अस्ति तर्हि स्थानं योजयन्तु ।
  • एकं तत्त्वं योजितं भवति तथा usedSize 1 वर्धते ।
 public void add(int data) {
        if(isFull()){
            elem = Arrays.copyOf(elem,elem.length * 2);
        }
        elem[usedSize++] = data;
    }
     /**
     * 判断当前的顺序表是不是满的!
     *
     * @return true:满   false代表空
     */
    private boolean isFull() {
        return usedSize == elem.length;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

pos स्थाने तत्वं योजयन्तु

pos सबस्क्रिप्ट् इत्यत्र तत्वं सम्मिलितं कुर्वन्तु।
सावधानताः : १.

  • वर्तमान क्रमसारणी पूर्णा अस्ति वा इति पश्यन्तु यदि पूर्णा अस्ति तर्हि स्थानं योजयन्तु ।
  • किं दत्तं pos पदं वैधानिकं भवति?यदि न तर्हि अपवादः क्षिप्तः भविष्यति।
  • pos स्थानस्य अनन्तरं तत्त्वानि पृष्ठतः चालयितुं पश्चात्-अग्रे पाशस्य उपयोगं कुर्वन्तु ।
  • एकं तत्त्वं योजितं भवति तथा usedSize 1 वर्धते ।
private boolean checkPosInAdd(int pos) throws PosIllegalException{

        if(pos < 0 || pos > usedSize){
            throw new PosIllegalException("位置不合法");
        }
        return true;
    }

    // 在 pos 位置新增元素
    public void add(int pos, int data) {
        try{
            if(checkPosInAdd(pos)){
                if(isFull()){
                    elem = Arrays.copyOf(elem,elem.length * 2);
                }
                for (int i = usedSize; i > pos ; i--) {
                    elem[i] = elem[i-1];
                }
                elem[pos] = data;
                usedSize++;
            }
        }catch(PosIllegalException e){
            e.printStackTrace();
        }

    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

कश्चन तत्त्वः समाहितः अस्ति वा इति निर्धारयतु

पश्यन्तु यत् दत्तः दत्तांशः क्रमसारणीयां समाविष्टः अस्ति वा।
केवलं प्रत्यक्षतया तस्य माध्यमेन लूप् कुर्वन्तु, यदि भवन्तः तत् प्राप्नुवन्ति तर्हि true प्रेषयन्तु, यदि भवन्तः न प्राप्नुवन्ति तर्हि false प्रत्यागच्छन्तु ।

public boolean contains(int toFind) {
        for (int i = 0; i < usedSize; i++) {
            if(elem[i] == toFind){
                return true;
            }
        }
        return false;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

कस्यचित् तत्त्वस्य अनुरूपं स्थानं ज्ञातव्यम्

अस्मिन् क्रमसारणीयां दत्तदत्तांशस्य अनुक्रमणिकां पश्यन्तु ।
केवलं प्रत्यक्षतया लूप् कृत्वा -1 न प्रत्यागत्य return उपस्क्रिप्ट् अन्वेष्टुम् ।

public int indexOf(int toFind) {
        for (int i = 0; i < usedSize; i++) {
            if(elem[i] == toFind){
                return i;
            }
        }
        return -1;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

तत्त्वं pos स्थाने प्राप्नुत

तत्त्वं pos स्थाने निर्गच्छतु।
सावधानताः : १.

  • pos कानूनी अस्ति वा इति पश्यन्तु
public int get(int pos) {
        try{
            if(checkPosInAdd(pos)){
                return elem[pos];
            }
        }catch(PosIllegalException e){
            e.printStackTrace();
        }
        return 0;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

pos इति स्थाने स्थितं तत्त्वं मूल्ये सेट् कुर्वन्तु

pos position element परिवर्तनं कुर्वन्तु।
सावधानताः : १.

  • pos कानूनी अस्ति वा इति पश्यन्तु।
public void set(int pos, int value) {
        try{
            if(checkPosInAdd(pos)){
                elem[pos] = value;
            }
        }catch(PosIllegalException e){
            e.printStackTrace();
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

कीवर्ड कीलस्य प्रथमा आगमनं विलोपयन्तु

कीलस्य प्रथमा आगमनं विलोपयन्तु।
सावधानताः : १.

  • अन्वेषणस्य माध्यमेन लूप् कुर्वन्तु।
  • एकैकं अग्रे प्रति आच्छादयितुं प्राप्तस्य कीलस्य अनन्तरं तत्त्वानां उपयोगं कुर्वन्तु ।
  • usedSize 1 द्वारा न्यूनीभवति।
public void remove(int key) {
        for (int i = 0; i < usedSize; i++) {
            if(elem[i] == key){
                for (int j = i; j < usedSize - 1; j++) {
                    elem[j] = elem[j + 1];
                }
                usedSize--;
            }
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

अनुक्रमसारणीदीर्घतां प्राप्नुत

अत्र क्रमसारणीयाः दीर्घतां प्राप्तुं उपयोगीदत्तांशसङ्ख्यां निर्दिशति अर्थात् usedSize इति ।

public int size() {
        return usedSize;
    }
  • 1
  • 2
  • 3

क्रमसूचीं स्पष्टं कुर्वन्तु

क्रमसारणीयाः सामग्रीं रिक्तं इति सेट् कुर्वन्तु ।
सावधानताः : १.

  • यतः वास्तविकं क्रमिकसारणी जेनेरिक्स् संगृह्णाति, एकैकं भ्रमणं कृत्वा तत्त्वानि रिक्तं सेट् भवन्ति ते अधः 0 इति सेट् कृत्वा प्रतिस्थापिताः भवन्ति ।
  • UsedSize अपि 0 इति सेट् भवति ।
public void clear() {
        for (int i = 0; i < usedSize; i++) {
            elem[i] = 0;
        }
        usedSize = 0;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

जावा मध्ये ArrayList इति

क्रमिकसूचीं प्रतिनिधितुं जावा मध्ये ArrayList वर्गः प्रदत्तः अस्ति ।

कार्यान्वित अन्तरफलकम्

कार्यान्वित अन्तरफलकम्

अन्तरफलकविवरणम् : १.

  1. RandomAccess अन्तरफलकं यादृच्छिकप्रवेशस्य समर्थनं सूचयति ।
  2. Cloneable इति अन्तरफलकं क्लोनिङ्ग् इत्यस्य समर्थनं सूचयति ।
  3. Serializable अन्तरफलकं serialization कृते समर्थनं सूचयति ।

निर्माणविधि

जावा ३ निर्माणविधयः प्रदाति यथा सारणीयां दर्शितम् अस्ति ।

प्रक्रियाविधिप्रयोगस्य परिचयः
ArrayList () 1.1.नो-तर्कनिर्माणम्
ArrayList (संग्रह<? extends E> ग) २.अन्येषां Collections इत्यस्य उपयोगेन ArrayList इत्यस्य निर्माणं कुर्वन्तु
ArrayList (int प्रारम्भिकक्षमता) 1.1.क्रमसारणीयाः आरम्भिकक्षमता निर्दिशन्तु

सामान्यविधयः

प्रदत्ताः सामान्यविधयः उपरि वयं यत् कार्यान्वितवन्तः तत्सदृशाः सन्ति ।
सामान्यविधयः

अनुक्रमसूचीनां लाभहानिः

लाभ

क्रमसारणीनां लाभाः निम्नलिखितरूपेण सन्ति ।

  1. यादृच्छिकप्रवेशः समर्थितः अस्ति ।
  2. दत्तं उपलिपिं पृच्छितुं द्रुतं भवति ।

अभावः

  1. यदि पर्याप्तं स्थानं नास्ति तर्हि तस्य विस्तारः करणीयः, स्मृतेः अपव्ययः भविष्यति ।
  2. शीर्षके मध्यभागे च निवेशनं विलोपनं च दत्तांशं चालयिष्यति ।

अभ्यासः

अभ्यासानां लिङ्कानि अधः सन्ति:
यांग हुई त्रिकोण