如何在 C++ 中使用兩次遍歷和一次遍歷從陣列中刪除元素?
兩次遍歷
首先,讓我們定義原始陣列以及要搜尋和從陣列中刪除的元素:
int ele = 5; int arr = [1,2,3,4];
現在,我們迴圈遍歷陣列以查詢給定元素:
for (i=0; i<length; i++) if (arr[i] == ele) break;
如果找到給定元素的位置,則我們將右側元素向左移動:
if (i < length) {
length--;
for (int j=i; j<length; j++)
arr[j] = arr[j+1];
}示例
讓我們看下面的實現,瞭解如何在兩次遍歷中刪除陣列中的元素:
#include<iostream>
using namespace std;
int main() {
int arr[] = {11, 15, 6, 8, 9, 10};
int length = sizeof(arr)/sizeof(arr[0]);
int ele = 6;
int i;
for (i=0; i<length; i++)
if (arr[i] == ele) break;
if (i < length) {
length--;
for (int j=i; j<length; j++)
arr[j] = arr[j+1];
}
cout << "The array after deletion is "<<endl;
for (int i=0; i<length; i++)
cout << arr[i] << " ";
return 0;
}輸出
以上程式碼將產生以下輸出:
The array after deletion is 11 15 8 9 10
一次遍歷
首先,讓我們定義原始陣列以及要搜尋和從陣列中刪除的元素:
int ele = 15; int arr = [11,15,6,8,9,10];
現在,我們宣告兩個變數:布林型 **found** 用於指定是否找到元素,以及整型 **pos** 用於儲存找到元素的位置:
bool found=false; int pos=-1;
接下來,我們搜尋陣列,如果找到元素,則儲存其位置並在迴圈遍歷時移動元素。
for (int i=0; i<length; i++){
if(pos!=-1){
arr[pos]=arr[pos+1];
j++;
}
else if(arr[i]==ele){
pos=i;
found=true;
}
}示例
讓我們看下面的實現,瞭解如何在僅一次遍歷中刪除陣列中的元素:
#include<iostream>
using namespace std;
int main() {
int arr[] = {11, 15, 6, 8, 9, 10};
int length = sizeof(arr)/sizeof(arr[0]);
int ele = 6 ;
bool found=false;
int pos=-1;
for (int i=0; i<length; i++){
if(pos!=-1){
arr[pos]=arr[pos+1];
pos++;
}
else if(arr[i]==ele){
pos=i;
found=true;
}
}
cout << "The array after deletion is "<<endl;
if(found){
length--;
}
for (int i=0; i<length; i++)
cout << arr[i] << " ";
return 0;
}輸出
以上程式碼將產生以下輸出:
The array after deletion is 11 15 8 9 10
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP