सभी तत्वों को एक इकाई द्वारा स्थानांतरित किया जाता है, जिसमें अंतिम तत्व शुरुआत के आसपास लपेटता है।

[0,1,3,3,4], इसे [4,0,1,3,3] शामिल करने के लिए संशोधित किया जाएगा, हालांकि यह इसे [4,0,3,3,3] शामिल करने के लिए अद्यतन करता है।

void shiftRight(int arr[], int n) {
    int temp = arr[n - 1];
    const int *end = arr + n - 1;
    for (const int *i = end; i > arr; i--) {
       arr[*i] = arr[*i - 1];
    }
    arr[0] = temp;
}

सरणी अनुचित रूप से अद्यतन किया गया है। मैं सरणी अद्यतन के साथ क्या गलत कर रहा हूँ?

c++
0
Andrew Ryan 30 जिंदा 2019, 02:32

1 उत्तर

सबसे बढ़िया उत्तर

आप इंडेक्स के साथ अपने पॉइंटर को अपनी सरणी में भ्रमित कर रहे हैं:

arr[*i] = arr[*i - 1]

आप i की तुलना arr से कर रहे हैं जो एक बड़ी गलती का संकेत देता है! आपका लूप वास्तव में है:

int *end = arr + n - 1;
for (int *i = end; i > arr; i--) {
   *i = *(i - 1);

पॉइंटर्स const नहीं हो सकते हैं, आप अपनी सरणी को संशोधित कर रहे हैं।

1
Matthieu Brucher 30 जिंदा 2019, 02:36