内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

C語言線性表實現(xiàn):順序表-創(chuàng)新互聯(lián)

文章目錄:
  • 概念理解:
  • 1. 動態(tài)順序表結(jié)構(gòu)體:
  • 2. 順序表動態(tài)初始化:
  • 3. 順序表擴容:
  • 4. 插入:
  • 5. 刪除:
  • 6. 按位序查找:
  • 7. 按值查找:
  • 8. 輸出順序表:
  • 9. 判斷順序表是否相等:
  • 10.測試:

目前累計服務(wù)客戶成百上千家,積累了豐富的產(chǎn)品開發(fā)及服務(wù)經(jīng)驗。以網(wǎng)站設(shè)計水平和技術(shù)實力,樹立企業(yè)形象,為客戶提供成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)頁設(shè)計、網(wǎng)絡(luò)營銷、VI設(shè)計、網(wǎng)站改版、漏洞修補等服務(wù)。成都創(chuàng)新互聯(lián)始終以務(wù)實、誠信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過對領(lǐng)先技術(shù)的掌握、對創(chuàng)意設(shè)計的研究、對客戶形象的視覺傳遞、對應(yīng)用系統(tǒng)的結(jié)合,為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進步。概念理解:

線性表:一種邏輯結(jié)構(gòu)。
順序表:采用順序存儲方式實現(xiàn)的線性表。

位序:從1開始。
數(shù)組下標:從0開始。

&引用符的使用:
函數(shù)參數(shù)帶&和不帶&的區(qū)別。

malloc:申請一整片連續(xù)的存儲空間,返回一個指向該空間首地址的指針。
free:釋放一整片連續(xù)的存儲空間。

1. 動態(tài)順序表結(jié)構(gòu)體:
//順序表的動態(tài)分配
#define InitSize 10 //初始大小
typedef struct{int* data;//指針,指向動態(tài)分配的內(nèi)存空間的首地址
	int length;//該順序表的長度
	int MaxSize;//該順序表的大長度
}SeqList;
2. 順序表動態(tài)初始化:
void InitList(SeqList &L){//初始化順序表,包括給順序表L動態(tài)分配內(nèi)存空間,設(shè)置順序表當前長度為0,設(shè)置順序表大長度100
	L.data = (int*)malloc(sizeof(int) * InitSize);
	L.length = 0;
	L.MaxSize = 100;	
}
3. 順序表擴容:
void IncreaseSize(SeqList &L,int len){//順序表擴容
	int* p = L.data;//創(chuàng)建一個指針指向順序表當前內(nèi)存空間的首地址,方便回收
	L.data = (int*)malloc(sizeof(int) * (L.MaxSize+len));//重新請求一塊更大的內(nèi)存空間分配給該順序表
	L.MaxSize += len;//修改順序表大長度
	for(int i=0;i<=L.length;i++){L.data[i] = p[i];//將原內(nèi)存空間中的數(shù)據(jù)復(fù)制到新申請的空間中
	}
	free(p);//釋放原來的內(nèi)存空間
}
4. 插入:
bool ListInsert(SeqList &L,int i,int e){//插入元素e到順序表位序為i的位置
	if(i<1 || i>L.length+1){//判斷插入位置是否合法
		return false;
	}
	if(L.length == L.MaxSize){//判斷順序表是否已滿
		return false;
	}
	for(int j=L.length;j<=i;j++){//i位置及之后的元素后移一位(這里注意區(qū)分位序和數(shù)組下標的關(guān)系)
		L.data[j] = L.data[j-1];
	}
	L.data[i-1] = e;//插入數(shù)據(jù)
	L.length++;//注意別忘了順序表長度+1
	return true;
}
5. 刪除:
bool ListDelete(SeqList &L,int i,int &e){//刪除順序表為序為i的數(shù)據(jù)元素,并將該元素的值賦給e
	if(i<1 || i>L.length){return false;
	}
	e = L.data[i-1];//將被刪除的元素的值賦值給e
	for(int j=i;j//位序i之后的元素前移
		L.data[j-1] = L.data[j];
	}
	L.length--;//注意別忘了順序表長度-1
	return true;
}
6. 按位序查找:
int getElem(SeqList L,int i){//按位序查找,返回該位序上的元素
	if(i<1 || i>L.length){//判斷位置是否合法
		return -1;
	}
	return L.data[i-1];
}	
7. 按值查找:
int LocateElem(SeqList L,int e){//按值查找,返回該值的位序
	for(int j=0;jif(L.data[j] == e){	return j+1;//返回的是位序
		}
	}
	return -1;
}
8. 輸出順序表:
void printList(SeqList L){//輸出順序表的元素
	printf("[");
	for(int i=0;iprintf("%d ",L.data[i]);
	}
	printf("]\n");
}
9. 判斷順序表是否相等:
bool equalsList(SeqList L1,SeqList L2){//判斷順序表內(nèi)容是否相同
	if(L1.MaxSize == L2.MaxSize){if(L1.length == L2.length){	for(int i=0;i		if(L1.data[i] == L2.data[i]){continue;
				}
			}
		}
		return true;
	}
	return false;
}
10.測試:
#include#include//使用malloc和free關(guān)鍵字需要引入這個庫

//順序表的動態(tài)分配
#define InitSize 10 //初始大小
typedef struct{int* data;//指針,指向動態(tài)分配的內(nèi)存空間的首地址
	int length;//該順序表的長度
	int MaxSize;//該順序表的大長度
}SeqList;

void InitList(SeqList &L){//初始化順序表,包括給順序表L動態(tài)分配內(nèi)存空間,設(shè)置順序表當前長度為0,設(shè)置順序表大長度100
	L.data = (int*)malloc(sizeof(int) * InitSize);
	L.length = 0;
	L.MaxSize = 100;	
}

void IncreaseSize(SeqList &L,int len){//順序表擴容
	int* p = L.data;//創(chuàng)建一個指針指向順序表當前內(nèi)存空間的首地址,方便回收
	L.data = (int*)malloc(sizeof(int) * (L.MaxSize+len));//重新請求一塊更大的內(nèi)存空間分配給該順序表
	L.MaxSize += len;//修改順序表大長度
	for(int i=0;i<=L.length;i++){L.data[i] = p[i];//將原內(nèi)存空間中的數(shù)據(jù)復(fù)制到新申請的空間中
	}
	free(p);//釋放原來的內(nèi)存空間
}

bool ListInsert(SeqList &L,int i,int e){//插入元素e到順序表位序為i的位置
	if(i<1 || i>L.length+1){//判斷插入位置是否合法
		return false;
	}
	if(L.length == L.MaxSize){//判斷順序表是否已滿
		return false;
	}
	for(int j=L.length;j<=i;j++){//i位置及之后的元素后移一位(這里注意區(qū)分位序和數(shù)組下標的關(guān)系)
		L.data[j] = L.data[j-1];
	}
	L.data[i-1] = e;//插入數(shù)據(jù)
	L.length++;//注意別忘了順序表長度+1
	return true;
}

bool ListDelete(SeqList &L,int i,int &e){//刪除順序表為序為i的數(shù)據(jù)元素,并將該元素的值賦給e
	if(i<1 || i>L.length){return false;
	}
	e = L.data[i-1];//將被刪除的元素的值賦值給e
	for(int j=i;j//位序i之后的元素前移
		L.data[j-1] = L.data[j];
	}
	L.length--;//注意別忘了順序表長度-1
	return true;
}

int getElem(SeqList L,int i){//按位序查找,返回該位序上的元素
	if(i<1 || i>L.length){//判斷位置是否合法
		return -1;
	}
	return L.data[i-1];
}	
 
int LocateElem(SeqList L,int e){//按值查找,返回該值的位序
	for(int j=0;jif(L.data[j] == e){	return j+1;//返回的是位序
		}
	}
	return -1;
}

void printList(SeqList L){//輸出順序表的元素
	printf("[");
	for(int i=0;iprintf("%d ",L.data[i]);
	}
	printf("]\n");
}

bool equalsList(SeqList L1,SeqList L2){//判斷順序表內(nèi)容是否相同
	if(L1.MaxSize == L2.MaxSize){if(L1.length == L2.length){	for(int i=0;i		if(L1.data[i] == L2.data[i]){continue;
				}
			}
		}
		return true;
	}
	return false;
}

int main(){SeqList L1;//聲明一個順序表
	InitList(L1);//初始化順序表
	
	//初始化、擴容測試
	printf("順序表當前內(nèi)存空間的首地址:%d\n",&L1.data[0]);
	printf("順序表當前大長度:%d\n",L1.MaxSize);
	IncreaseSize(L1,5);//擴容順序表,擴容長度為5
	printf("順序表當前內(nèi)存空間的首地址:%d\n",L1.data);
	printf("順序表當前大長度:%d\n",L1.MaxSize);
	
	//插入、輸出測試
	ListInsert(L1,1,5);
	printList(L1);
	
	//按位查找、按值查找測試
	printf("順序表中位序為1的元素為:%d\n",getElem(L1,1));
	printf("順序表中元素5的位序為:%d\n",LocateElem(L1,5));
	
	//刪除測試
	int a;
	ListDelete(L1,1,a);
	printf("刪除的元素為:%d\n",a);
	printList(L1);
	
	//判斷順序表數(shù)據(jù)相等測試
	SeqList L2;//聲明一個順序表
	InitList(L2);//初始化順序表	
	ListInsert(L1,1,3);
	ListInsert(L2,1,8);
	printf("順序表L1和L2是否相等:%d\n",equalsList(L1,L2));
	ListDelete(L1,1,a);
	ListInsert(L1,1,8);
	IncreaseSize(L2,5);
	printf("順序表L1和L2是否相等:%d\n",equalsList(L1,L2));
	
	return 0;
}

在這里插入圖片描述

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)頁題目:C語言線性表實現(xiàn):順序表-創(chuàng)新互聯(lián)
URL標題:http://m.rwnh.cn/article18/djiedp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機、企業(yè)建站、移動網(wǎng)站建設(shè)、網(wǎng)站收錄外貿(mào)網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管
米林县| 万全县| 都江堰市| 瓮安县| 冷水江市| 九江县| 耒阳市| 呼伦贝尔市| 宁国市| 邹平县| 阿坝| 东宁县| 乐亭县| 航空| 建湖县| 昌宁县| 水富县| 沽源县| 富源县| 沭阳县| 乐都县| 吉安市| 江津市| 垦利县| 桃园市| 大荔县| 玛沁县| 拉萨市| 牟定县| 石渠县| 沅陵县| 灌云县| 阜平县| 绥阳县| 宁化县| 肃北| 肥乡县| 云林县| 乌恰县| 景谷| 孟村|