網(wǎng)站改備案信息嗎最新的疫情信息
文章目錄
- @[TOC]
- 1.前言🙋🏼?♂?
- 2.順序表🧣
- 2.1 順序表概念🧣
- 2.2 順序表特點(diǎn)🧣
- 2.2 順序表作用🧣
- 3.順序表基操🧤
- 3.1 結(jié)構(gòu)體初始化🎉
- 3.2 順序表初始化🎉
- 3.3 順序表創(chuàng)建🎉
- 3.4 順序表打印🎉
- 3.5 順序表插入🎉
- 3.6 順序表刪除🎉
- 3.7 順序表查找🎉
- 3.8 順序表修改🎉
- 4. 總結(jié)
文章目錄
- @[TOC]
- 1.前言🙋🏼?♂?
- 2.順序表🧣
- 2.1 順序表概念🧣
- 2.2 順序表特點(diǎn)🧣
- 2.2 順序表作用🧣
- 3.順序表基操🧤
- 3.1 結(jié)構(gòu)體初始化🎉
- 3.2 順序表初始化🎉
- 3.3 順序表創(chuàng)建🎉
- 3.4 順序表打印🎉
- 3.5 順序表插入🎉
- 3.6 順序表刪除🎉
- 3.7 順序表查找🎉
- 3.8 順序表修改🎉
- 4. 總結(jié)
1.前言🙋🏼?♂?
?? C語言想學(xué)好,鏈表和順序表都跑不了.
2.順序表🧣
2.1 順序表概念🧣
?? 順序表是C語言中一種常用的數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)一組具有相同類型的元素。順序表是一種線性表,即元素之間存在順序關(guān)系,可以通過下標(biāo)訪問元素。
2.2 順序表特點(diǎn)🧣
?? 順序表可以采用數(shù)組來實(shí)現(xiàn),也可以使用動(dòng)態(tài)內(nèi)存分配來實(shí)現(xiàn)。無論采用哪種實(shí)現(xiàn)方式,順序表都具有以下特點(diǎn):
-
??1. 隨機(jī)訪問:順序表中的元素可以通過下標(biāo)直接訪問,具有O(1)的時(shí)間復(fù)雜度。
-
??2. 內(nèi)存連續(xù):順序表中的元素在內(nèi)存中是連續(xù)存儲(chǔ)的,這樣可以有效利用計(jì)算機(jī)的緩存機(jī)制,提高訪問效率。
-
??3. 固定大小:使用數(shù)組實(shí)現(xiàn)的順序表的大小是固定的,無法動(dòng)態(tài)擴(kuò)容或縮容。使用動(dòng)態(tài)內(nèi)存分配實(shí)現(xiàn)的順序表可以動(dòng)態(tài)調(diào)整大小。
-
??4. 插入刪除效率低:在順序表的中間位置插入或刪除元素需要移動(dòng)后續(xù)元素,時(shí)間復(fù)雜度為O(n)。
2.2 順序表作用🧣
?? 在C語言中,可以通過定義結(jié)構(gòu)體來表示順序表,結(jié)構(gòu)體中包含一個(gè)指向元素?cái)?shù)組的指針,以及其他與順序表相關(guān)的屬性,例如當(dāng)前元素個(gè)數(shù)和最大容量等。使用結(jié)構(gòu)體可以更方便地管理和操作順序表。
3.順序表基操🧤
3.1 結(jié)構(gòu)體初始化🎉
#include <stdio.h>
#define MAXSIZE 100
typedef int ElemType;typedef struct{ElemType data[MAXSIZE]; ElemType length;
}sqlList;sqlList *L;
3.2 順序表初始化🎉
//初始化表
void initTable(sqlList *L){printf("initTable:\n");L->length = 0;
}
3.3 順序表創(chuàng)建🎉
//創(chuàng)建表
void createTable(sqlList *L,ElemType number){printf("createTable:\n");int i;printf("請(qǐng)輸入%d個(gè)數(shù)據(jù):\n",number);if(L->length>MAXSIZE){printf("順序表已滿");}for(i=0;i<number;i++){scanf("%d",&L->data[i]);}L->length = i;}
3.4 順序表打印🎉
//顯示表
void showTable(sqlList *L){printf("showTable:\n"); int i;for(i=0;i<L->length;i++){printf("%d ",L->data[i]);}
}
3.5 順序表插入🎉
void insertTable(sqlList *L,ElemType pos,ElemType val){printf("\ninserTable:\n");int i;if(L->length<MAXSIZE){for(i=L->length-1;i>=pos-1;i--){L->data[i+1] = L->data[i];}L->data[pos-1] = val;L->length++;}else{printf("順序表長(zhǎng)度已滿\n");}
}
3.6 順序表刪除🎉
void deleteTable(sqlList *L,ElemType x){printf("\n deleteTable: \n");int i,j;for(i=0;i<L->length;i++){if(L->data[i] == x){for(j=i;j<L->length;j++){L->data[j] =L->data[j+1];}L->length--;}}
}
3.7 順序表查找🎉
//查找元素
int queryTable(sqlList *L,ElemType x){printf("\nqueryTable:\n");int i,res;i=0;while(i<L->length && L->data[i] !=x)i++;if(i>=L->length) return 0;else return i+1;
}
3.8 順序表修改🎉
//修改元素
void updateTable(sqlList *L,ElemType findNuber,ElemType alterNuber){int res = queryTable(L,findNuber);int i;L->data[res-1] = alterNuber;printf("\nres = %d\n",res);
}
以下是順序表的C語言代碼(全部):
#include <stdio.h>
#define MAXSIZE 100
typedef int ElemType;typedef struct{ElemType data[MAXSIZE];ElemType length;
}sqlList;sqlList *L;//初始化表
void initTable(sqlList *L){printf("initTable:\n");L->length = 0;
} //創(chuàng)建表
void createTable(sqlList *L,ElemType number){printf("createTable:\n");int i;printf("請(qǐng)輸入%d個(gè)數(shù)據(jù):\n",number);if(L->length>MAXSIZE){printf("順序表已滿");}for(i=0;i<number;i++){scanf("%d",&L->data[i]);}L->length = i;} //顯示表
void showTable(sqlList *L){printf("showTable:\n"); int i;for(i=0;i<L->length;i++){printf("%d ",L->data[i]);}
} //插入一個(gè)數(shù)據(jù)
void insertTable(sqlList *L,ElemType pos,ElemType val){printf("\ninserTable:\n");int i;if(L->length<MAXSIZE){for(i=L->length-1;i>=pos-1;i--){L->data[i+1] = L->data[i];}L->data[pos-1] = val;L->length++;}else{printf("順序表長(zhǎng)度已滿\n");}
} //刪除一個(gè)元素
void deleteTable(sqlList *L,ElemType x){printf("\n deleteTable: \n");int i,j;for(i=0;i<L->length;i++){if(L->data[i] == x){for(j=i;j<L->length;j++){L->data[j] =L->data[j+1];}L->length--;}}
} //查找元素
int queryTable(sqlList *L,ElemType x){printf("\nqueryTable:\n");int i,res;i=0;while(i<L->length && L->data[i] !=x)i++;if(i>=L->length) return 0;else return i+1;
} //修改元素
void updateTable(sqlList *L,ElemType findNuber,ElemType alterNuber){int res = queryTable(L,findNuber);int i;L->data[res-1] = alterNuber;printf("\nres = %d\n",res);
} main()
{initTable(&L); createTable(&L,5);showTable(&L);insertTable(&L,3,60);showTable(&L);deleteTable(&L,60);showTable(&L);printf("下標(biāo):%d\n",queryTable(&L,20));updateTable(&L,20,90);showTable(&L);
}