最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++實(shí)現(xiàn)動(dòng)態(tài)數(shù)組實(shí)踐

 更新時(shí)間:2026年05月28日 09:03:00   作者:byg_qlh  
這段C++代碼實(shí)現(xiàn)了動(dòng)態(tài)數(shù)組的多種操作,包括初始化、賦值、打印、增刪改查等,通過(guò)這些操作可以靈活地管理數(shù)組數(shù)據(jù),適用于需要?jiǎng)討B(tài)調(diào)整數(shù)組大小的場(chǎng)景

C++實(shí)現(xiàn)動(dòng)態(tài)數(shù)組

  • 1. 數(shù)組初始化
  • 2. 給數(shù)組賦值
  • 3. 打印數(shù)組
  • 4. 增加數(shù)組長(zhǎng)度
  • 5. 數(shù)組最后一個(gè)值替代最小值
  • 6. 逆置數(shù)組元素
  • 7. 逆置數(shù)組中指定位置范圍的元素
  • 8. 刪除數(shù)組中值為x的所有元素
  • 9. 刪除所有介于s和t之間(包含s與t)的元素
  • 10. 有序表中刪除相同元素
  • 11. 合并兩個(gè)有序數(shù)組,合并結(jié)果存入第三個(gè)數(shù)組
  • 12. 將數(shù)組中的前m位與后n為的位置互換

整體代碼

如下:

#include<iostream>

using namespace std;

struct SeList{//struct結(jié)構(gòu)體與class唯一的區(qū)別就是默認(rèn)訪問(wèn)權(quán)限不一樣 
	int *data;//struct默認(rèn)是public的訪問(wèn)權(quán)限,所以方便用于作為節(jié)點(diǎn)結(jié)構(gòu)體 
	int Max;//動(dòng)態(tài)數(shù)組的整體思想是在結(jié)構(gòu)體內(nèi)聲明指針,最大長(zhǎng)度,實(shí)際長(zhǎng)度,在外部函數(shù)中生成實(shí)際的數(shù)組,數(shù)組的這三個(gè)主要指標(biāo)放在了結(jié)構(gòu)體中 
	int length;
};

void initList(SeList &list,int x){//數(shù)組初始化 
	list.data=new int[x];
	list.Max=x;
	list.length=0; 
}

void setList(SeList &list){//給數(shù)組賦值 
	for(int i=0;i<list.Max;++i){
		list.data[i]=i+1;
		if(list.length<list.Max){
			list.length++;
		}
	}
}

void set_List(SeList &list){//給數(shù)組賦值 
	for(int i=0;i<list.Max/2;++i){
		list.data[i]=i+1;
		if(list.length<list.Max/2){
			list.length++;
		}
	}
}

void printList(SeList &list){//打印數(shù)組 
	for(int i=0;i<list.length;++i){
		cout<<list.data[i]<<" ";
	}
	cout<<endl;
}

void increaseList(SeList &list,int len){//增加數(shù)組長(zhǎng)度 
	int *p=list.data;
	list.data=new int[list.Max+len];
	for(int i=0;i<list.length;++i){
		list.data[i]=p[i];
	}
	list.Max=list.Max+len;
	delete[] p;
}

bool deleteMin(SeList &list,int &value){//數(shù)組最后一個(gè)值替代最小值 
	if(list.length==0){
		return false;
	}
	value=list.data[0];
	int a=0;//輔助變量,記錄最小元素的位置 
	for(int i=0;i<list.length;++i){
		if(value>list.data[i]){
			value=list.data[i];
			a=i;
		}
	}
	list.data[a]=list.data[list.length-1];
	return true;
}

bool reverseList(SeList &list){//逆置數(shù)組元素 
	if(list.length==0){
		return false;
	}
	int temp=0;//輔助變量 
	for(int i=0;i<list.length/2;++i){//無(wú)需考慮數(shù)組元素個(gè)數(shù)的奇偶性,因?yàn)閘ength/2取整 
		temp=list.data[i];
		list.data[i]=list.data[list.length-i-1];
		list.data[list.length-i-1]=temp;
	}
	return true; 
}

bool reverse_List(SeList &list,int m,int n){//逆置數(shù)組中指定位置范圍的元素
	if(list.length==0||m>=n){
		return false;
	}
	int temp=0,k=0;
	for(int i=m-1;i<=(n+m-2)/2;++i){
		temp=list.data[i];
		list.data[i]=list.data[n-1-k];
		list.data[n-1-k]=temp;
		++k;
	}
}

void deleteX(SeList &list,int x){//刪除數(shù)組中值為x的所有元素 
	int k=0;//記錄非x的元素個(gè)數(shù),也就是保留下來(lái)的元素個(gè)數(shù) 
	for(int i=0;i<list.length;++i){//順序掃描數(shù)組,每判斷一個(gè)非x值就加入結(jié)果數(shù)組 
		if(list.data[i]!=x){//非x元素保留下來(lái),這里利用了i的值一定大于等于k的值,所以在一個(gè)循環(huán)中就可以解決問(wèn)題 
			list.data[k]=list.data[i];
			++k;
		}
	}
	list.length=k;//修改數(shù)組長(zhǎng)度 
}

bool deleteST(SeList &list,int s,int t){//刪除所有介于s和t之間(包含s與t)的元素 
	if(s>=t){
		cout<<"輸入范圍錯(cuò)誤"<<endl; 
		return false;
	}
	if(list.length==0){
		cout<<"順序表為空"<<endl;
		return false;
	}
	int k=0;// 記錄不在范圍s與t之間的元素的個(gè)數(shù) 
	for(int i=0;i<list.length;++i){//順序掃描數(shù)組,每判斷到一個(gè)不屬于s與t之間的元素就加入結(jié)果數(shù)組 
		if(list.data[i]<s||list.data[i]>t){
			list.data[k]=list.data[i];
			++k;
		}
	}
	list.length=k;//修改數(shù)組長(zhǎng)度 
	return true;
} 

void deleteSame(SeList &list){//有序表中刪除相同元素
	int k=1;//非相同元素的個(gè)數(shù) 
	for(int i=1;i<list.length;++i){// 因?yàn)榈谝粋€(gè)肯定不重復(fù),從第二個(gè)元素開始順序掃描數(shù)組,每判斷到一個(gè)不是相同的元素就將其加入結(jié)果數(shù)組 
		if(list.data[i]!=list.data[i-1]){
			list.data[k]=list.data[i];
			++k;
		}
	}
	list.length=k;//修改數(shù)組長(zhǎng)度 
}

bool addList(SeList list1,SeList list2,SeList &list){//合并兩個(gè)有序數(shù)組,合并結(jié)果存入第三個(gè)數(shù)組 
	if(list1.length+list2.length>list.Max){//如果前兩個(gè)數(shù)組的長(zhǎng)度之和大于第三個(gè)數(shù)組長(zhǎng)度最大值,無(wú)法合并,返回錯(cuò)誤 
		return false;
	}
	int i=0;//輔助變量,記錄第一個(gè)數(shù)組的下標(biāo) 
	int j=0;//輔助變量,記錄第二個(gè)數(shù)組的下標(biāo) 
	int k=0;//輔助變量,記錄第三個(gè)數(shù)組的下標(biāo) 
	while(i<list1.length&&i<list2.length){//這里使用while循環(huán),對(duì)判斷條件的設(shè)置比較關(guān)鍵;當(dāng)兩個(gè)數(shù)組都沒有遍歷完時(shí),比較兩個(gè)數(shù)組最前面的值,較小者加入結(jié)果數(shù)組 
		if(list1.data[i]<=list2.data[j]){
			list.data[k]=list1.data[i];
			k++;
			i++; 
		}else{
			list.data[k]=list2.data[j];
			k++;
			j++;
		}
	}
	while(i<list1.length){//若只有第一個(gè)數(shù)組還沒有遍歷完,第一個(gè)數(shù)組剩余數(shù)據(jù)是表中較大的了,按順序加入結(jié)果數(shù)組即可 
		list.data[k]=list1.data[i];
		k++;
		i++;
	}
	while(j<list2.length){
		list.data[k]=list2.data[j];
		k++;
		j++;
	}
	list.length=k;
	return true;
}

bool invertList(SeList &list,int m,int n){//將數(shù)組中的前m位與后n為的位置互換,可以看做先將數(shù)組整個(gè)逆置,之后對(duì)目前的兩個(gè)數(shù)組分別再逆置,調(diào)用指定范圍的逆置函數(shù)實(shí)現(xiàn) 
	 reverseList(list);
	 reverse_List(list,1,n);
	 reverse_List(list,n+1,n+m);
	 return true;
} 

bool insert_List(SeList &list,int x){//若查到值為x的元素,將其與其后的元素交換位置,若查不到,則將其插入順序表中使得,順序表仍然遞增 
	 int low=0;
	 int n=list.length-1;
	 int high=n;
	 int mid;
	 while(low<=high){
	 	mid=(low+high)/2;
	 	if(list.data[mid]==x){
	 		break;
		 }else if(list.data[mid]<x){
		 	low=mid+1;
		 }else{
		 	high=mid-1;
		 }
	 }
	 if(list.data[mid]==x&&mid!=n){
	 	list.data[mid]=list.data[mid+1];
	 	list.data[mid+1]=x;
	 	cout<<x<<endl;
	 }
	 if(low>high){
	 	for(int i=n;i>high;--i){
	 		list.data[i+1]=list.data[i];
	 		list.data[i+1]=x;
	 		cout<<x<<endl;
		 }
		 list.length++;
	 }
}

int main(){
	SeList list1;
	initList(list1,15);
	setList(list1);//初始化并設(shè)置第一個(gè)數(shù)組 
	printList(list1);
	
	SeList list2;
	initList(list2,15);
	set_List(list2);
	printList(list2);//初始化并設(shè)置第二個(gè)數(shù)組 
	
	SeList list3;
	initList(list3,30);
	addList(list1,list2,list3);
	printList(list3);
	
	invertList(list1,6,9);
	printList(list1);

	
	insert_List(list2,5);
	printList(list2);
	
	
	return 0;
}

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++自定義封裝socket操作業(yè)務(wù)類完整實(shí)例

    C++自定義封裝socket操作業(yè)務(wù)類完整實(shí)例

    這篇文章主要介紹了C++自定義封裝socket操作業(yè)務(wù)類,結(jié)合完整實(shí)例形式分析了Linux環(huán)境下C++操作socket的封裝業(yè)務(wù)類,可實(shí)現(xiàn)基本的socket連接、參數(shù)設(shè)置、發(fā)送請(qǐng)求等基本功能,需要的朋友可以參考下
    2017-08-08
  • 詳解C語(yǔ)言中accept()函數(shù)和shutdown()函數(shù)的使用

    詳解C語(yǔ)言中accept()函數(shù)和shutdown()函數(shù)的使用

    這篇文章主要介紹了詳解C語(yǔ)言中accept()函數(shù)和shutdown()函數(shù)的使用,用來(lái)操作socket相關(guān)的網(wǎng)絡(luò)通信,需要的朋友可以參考下
    2015-09-09
  • 利用C++實(shí)現(xiàn)最長(zhǎng)公共子序列與最長(zhǎng)公共子串

    利用C++實(shí)現(xiàn)最長(zhǎng)公共子序列與最長(zhǎng)公共子串

    這篇文章主要給大家介紹了如何利用C++實(shí)現(xiàn)最長(zhǎng)公共子序列與最長(zhǎng)公共子串,文章一開始就給大家簡(jiǎn)單的介紹了什么是子序列,子串應(yīng)該比較好理解就不用多介紹了,人后通過(guò)算法及示例代碼詳細(xì)介紹了C++實(shí)現(xiàn)的方法,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。
    2016-12-12
  • C++ 取地址符相關(guān)的默認(rèn)函數(shù)

    C++ 取地址符相關(guān)的默認(rèn)函數(shù)

    本文主要介紹了C++ 取地址符相關(guān)的默認(rèn)函數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2026-03-03
  • C++利用ImGUI繪制D3D外部菜單

    C++利用ImGUI繪制D3D外部菜單

    ImGUI 它是與平臺(tái)無(wú)關(guān)的C++輕量級(jí)跨平臺(tái)圖形界面庫(kù),沒有任何第三方依賴,可以將ImGUI的源碼直接加到項(xiàng)目中使用。本文將利用ImGUI繪制D3D外部菜單,需要的可以參考一下
    2022-09-09
  • OpenCV基于背景減除實(shí)現(xiàn)行人計(jì)數(shù)

    OpenCV基于背景減除實(shí)現(xiàn)行人計(jì)數(shù)

    本文主要介紹了如何使用OpenCV C++對(duì)視頻中的人流量進(jìn)行統(tǒng)計(jì)。文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)OpenCV有一定的幫助,需要的可以了解一下
    2022-01-01
  • C++?OpenCV紅綠燈檢測(cè)Demo實(shí)現(xiàn)詳解

    C++?OpenCV紅綠燈檢測(cè)Demo實(shí)現(xiàn)詳解

    OpenCV(Open Source Computer Vision Library)是開源的計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)庫(kù),提供了C++、 C、 Python、 Java接口,并支持Windows、 Linux、 Android、 Mac OS平臺(tái),下面這篇文章主要給大家介紹了關(guān)于C++?OpenCV紅綠燈檢測(cè)Demo實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • 使用C語(yǔ)言實(shí)現(xiàn)CRC校驗(yàn)的方法

    使用C語(yǔ)言實(shí)現(xiàn)CRC校驗(yàn)的方法

    本篇文章是對(duì)使用C語(yǔ)言實(shí)現(xiàn)CRC校驗(yàn)的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C/C++和OpenCV實(shí)現(xiàn)調(diào)用攝像頭

    C/C++和OpenCV實(shí)現(xiàn)調(diào)用攝像頭

    本文主要介紹了C/C++和OpenCV實(shí)現(xiàn)調(diào)用攝像頭,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-05-05
  • C++ Primer 第一部分基本語(yǔ)言

    C++ Primer 第一部分基本語(yǔ)言

    這篇文章主要介紹了C++ Primer 第一部分基本語(yǔ)言的相關(guān)資料,需要的朋友可以參考下
    2014-02-02

最新評(píng)論

柳州市| 沈阳市| 河北区| 冀州市| 临汾市| 赫章县| 吴江市| 洮南市| 永顺县| 徐水县| 垫江县| 开鲁县| 周口市| 隆化县| 获嘉县| 庆阳市| 焦作市| 海丰县| 宽城| 赣榆县| 威海市| 高州市| 高雄县| 舒城县| 三亚市| 岳阳市| 宜城市| 舞钢市| 靖安县| 武义县| 湖南省| 申扎县| 安平县| 城固县| 璧山县| 巴楚县| 两当县| 祁连县| 庄浪县| 鹿邑县| 长宁区|