資料存放在記憶體中,在記憶體中的組織形式只有兩種:
衡量乙個演算法是否優越:
int a[100];//就是在記憶體中申請100個連續的sizeof(int)空間
int *p = (int *)malloc(100xsizeof(int));//在堆空間中申請100個連續的int空間
對空間進行訪問:得到第10個成員,則a[9],o(1)的成員訪問時間(這裡o(1)指的是時間複雜度,代表固定的時間,與變數無關)。
如果要在這100個空間中插入/刪除乙個數,需將後面所有的成員後移/前移。所以陣列一般不會去新增或刪除成員,其最大的優點是可以一次性訪問某個成員,借助了陣列下標的優越性。
要得出1~127這些範圍中某個數的二進位制編碼中,從低位開始,第一次出現1的bit位編號。
例如:3——>0000 0011——>bit0 4——>0000 0100——>bit2
乙個比較簡單的方法:
如果data&0x01 == 1 ,已經找到這個bit位號了
否則data>>1,迴圈檢測
雖然最多檢測8次,但是我們仍然沒有辦法固定得到這個值的具體時間。
可以構建乙個表:a[127] =
隨便輸入乙個1~127之間的數n,可直接得到結果為a[n]。這樣就能夠在確定的時間內得到期望的結果。缺點是要事先構建表,占用記憶體空間。
//在頭部新增
linkslitp insert_head(linklistp head,linklistp newnode)
//在尾部新增
linklistp insert_tail(linklistp head,linklistp newnode)
else
temp->next = newnode;
newnode->next = null;
}return head;
}//在中間某個位置新增
linklistp insert_local(linklistp head,linklistp newnode,int data)
linklistp prev = head;
temp = head->next;
while (temp != null && data != temp->data)
prev->next = newnode;
newnode->next = temp;
return head;
}//刪除鍊錶中的某個結點
linklistp delnode(linklistp head, int data)
linklistp prev = head;
temp = head->next;
while (temp!=null && temp->data != data)
if (temp == null)
return null;
prev->next = temp->next;
free(temp);
return head;
}//輸出函式
void output(linklistp head)
printf("\n");
}int main()
; for(int i=0;i<10;i++)
//在鍊錶某個位置插入
int data;
linklistp newnode2 = (linklistp)malloc(sizeof(linknode));
newnode2->data = 66;
printf("pls input need insert data:");
scanf_s("%d", &data);
linklistp result1 = insert_local(head, newnode2, data);
if (result1 == null)
printf("del failure or not has this node \n");
else
output(result1);
//刪除鍊錶中某個結點
陣列與鍊錶
陣列和鍊錶簡介 在計算機中要對給定的資料集進行若干處理,首要任務是把資料集的一部分 當資料量非常大時,可能只能一部 分一部分地讀取資料到記憶體中來處理 或全部儲存到記憶體中,然後再對記憶體中的資料進行各種處理。例如,對於資料集 s,要求 s 中元素的和,首先要把資料儲存到記憶體中,然後再將記憶體中的...
陣列與鍊錶
陣列,在記憶體上給出了連續的空間.鍊錶,記憶體位址上可以是不連續的,每個鍊錶的節點包括原來的記憶體和下乙個節點的資訊 單向的乙個,雙向鍊錶的話,會有兩個 優點 使用方便 查詢效率 比煉表高,記憶體為一連續的區域 缺點 大小固定,不適合動態儲存,不方便動態新增 優點 可動態新增刪除 大小可變 缺點 只...
陣列與鍊錶
使用陣列意味著所有待辦事項在記憶體中都是相連的 緊靠在一起的 所以在陣列中新增新元素也可能很麻煩。如果沒有了空間,就得移到記憶體的其他地方,因此新增新元素的速度會很慢。一種解決之道是 預留座位 即便當前只有3個待辦事項,也請計算機提供10個位置,以防需要新增待辦事項。這樣,只要待辦事項不超過10個,...