資料結構 1 順序表

2021-10-10 17:58:57 字數 1742 閱讀 7257

線性表:具有相同資料型別的n(n>=0)個資料元素的有序序列

函式中定義的陣列位於棧段,系統棧大小ulimit -s8192 (8mb)

棧段存管理節點位址,管理節點、資料都在堆段

結構操作:增刪改查

☞刪除指當前記憶體可以被占用,如果被覆寫就找不回來了

#

include

#include

#include

#include

typedef

struct

vector

vec;

//堆區

vec *

initvec

(int n)

void

freevec

(vec *v)

intexpand

(vec *v)if(

!temp)

return0;

v->data = temp;

v->size += expsize;

printf

("expand %d bytes successfully~\n"

, expsize)

;return1;

}int

insert

(vec *v,

int idx,

int val)

//memcpy(dst, src, n); 一次拷貝不會覆蓋丟失資料

//重點:下標從0開始

memmove

(v->data + idx +

1, v->data + idx,

sizeof

(int)*

(v->length - idx));

v->data[idx]

= val;

v->length++

;return1;

}int

erase

(vec *v,

int idx)

void

showvec

(vec *v)

}printf

("]\n");

return;}

intfind

(vec *v,

int val)

return-1

;}intmain()

showvec

(v);

}insert

(v,1,68

);printf

("find 68 at %d\n"

,find

(v,68))

;freevec

(v);

return0;

}

動態申請記憶體malloc,calloc,realloc,釋放記憶體free,避免記憶體洩露

malloc 開闢空間不清空

calloc 開闢空間且清空

realloc 智慧型地開闢一段空間

realloc(src,size)

1.在原空間src後擴建,成功後返回src;

2.原位址擴建失敗後申請新空間,成功後順序拷貝原空間,自動 free(src) 並返回新位址

3.申請新空間失敗,返回null

開闢空間時嚴謹的做法:動態減小開闢空間的大小

原空間大小為n,新開闢新空間大小為n+n(2倍) -> 失敗時改為n+n/2(1.5倍)-> n+n/4(1.25倍)…

資料結構 1 順序表

資料結構的基礎知識 1968年美國克努特教授開創了資料結構的最初體系 資料結構是指資料的邏輯結構和儲存結構及其操作 資料結構是一門綜合性的專業客場,是一門介於數學 計算機硬體 計算機軟體之間的一門核心課程。是設計和實現編譯系統 作業系統 資料庫系統及其他系統程式和大型應用程式的基礎 資料的邏輯結構 ...

資料結構 1 順序表

目錄 順序表1.順序表的概念及結構 2.特點 3.動態順序表的實現 3.1 順序表初始化 3.2 順序表銷毀 3.3 順序表列印 3.4 檢查空間,如果滿了,進行增容 3.5 順序表尾插 3.6 順序表尾刪 3.7 順序表頭插 3.8 順序表頭刪 3.9 順序表查詢 3.10 順序表在pos位置插入...

資料結構 實驗1 順序表

問題描述 設計乙個順序表操作演示程式。基本要求 順序表操作演示程式提供乙個使用者介面,可演示的基本功能包括 1 初始化順序表 2 輸入並建立順序表 3 輸出順序表中的元素 4 在順序表指定位置插入元素 5 在順序表指定元素之前插入元素 6 刪除順序表指定位置的元素 7 刪除順序表指定元素之前的元素 ...