順序鍊錶的主要思想就是使用乙個整型陣列來儲存資料的指標。
在建立記憶體的時候如圖, 用後面的陣列來儲存指標。
//大量使用 給void重新起個名字 封裝使用的資料j 讓其對使用者是透明的
typedef void seqlist;
typedef void seqlistnode;
seqlist* seqlist_create(int capacity);
int seqlist_create2(seqlist **handle, int capacity);
void seqlist_destroy(seqlist* list);
void seqlist_clear(seqlist* list);
int seqlist_length(seqlist* list);
int seqlist_capacity(seqlist* list);
int seqlist_insert(seqlist* list, seqlistnode* node, int pos);
seqlistnode* seqlist_get(seqlist* list, int pos);
seqlistnode* seqlist_delete(seqlist* list, int pos);
#endif //__my_seqlist_h__
#include#include#include#include"seqlist.h"
typedef struct _tag_seqlist
tseqlist;
int seqlist_create2(seqlist **handle, int capacity)
memset(ret, 0, sizeof(tseqlist)+sizeof(unsigned int)*capacity);
ret->node = (unsigned int *)(ret + 1); //ret向後跳sizeof(tseqlist)是node指向 指標部分
ret->capacity = capacity;
ret->length = 0;
*handle = ret;
return iret;
}seqlist* seqlist_create(int capacity)
memset(ret, 0, sizeof(tseqlist)+sizeof(unsigned int)*capacity);
ret->node = (unsigned int *)(ret + 1); //ret向後跳sizeof(tseqlist)是node指向 指標部分
ret->capacity = capacity;
ret->length = 0;
return ret;
}void seqlist_destroy(seqlist* list)
void seqlist_clear(seqlist* list)
int seqlist_length(seqlist* list)
tlist = (tseqlist*)list;
return tlist->length;
}int seqlist_capacity(seqlist* list)
tlist = (tseqlist*)list;
return tlist->capacity;
}int seqlist_insert(seqlist* list, seqlistnode* node, int pos)
// if (pos >= tlist->length)
int i = 0;
for (i = tlist->length; i>pos; i--)
//結束迴圈的時候,pos正好是要插入的位置
tlist->node[pos] = (unsigned int)node;
tlist->length++;
return 0;
}seqlistnode* seqlist_get(seqlist* list, int pos)
seqlistnode* seqlist_delete(seqlist* list, int pos)
tlist->length--;
return ret;
}
#include#include#include"seqlist.h"
typedef struct _teacher
teacher;
int main()
} for (int i = 0; i < seqlist_length(list); i++)
seqlist_destroy(list);
system("pause");
return 0;
}
學習筆記 鍊錶 鍊錶入門
重新學習程式語言日記,2011年12月29日 09 17分 定義乙個結構體 struct linkhead,p1,p2 首先定義了乙個結構體,結構體包括指標域,資料域。這個結構體就是你鍊錶裡面的節點。每個節點都包括了資料域,指標域。有了這麼乙個結構體。肯定就需要初始化這個結構體了。寫個函式來初始化鍊...
鍊錶學習筆記 雙向鍊錶
這次 寫的是迴圈鍊錶,用的是節點連線。雙向鍊錶相比與一般鍊錶要注意的地方就是 頭部插入和尾部插入 不要進行空指標操作。非鍊錶尾部的處理 if next null node pre current 如果是在頭部插如 則沒有 前節點 if i 0 tlist lenght return 0 dlinkl...
鍊錶學習筆記
鍊錶是一種物理儲存單元上非連續 非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標將一組零散的記憶體塊串聯起來實現的。為了將所有的結點串起來,每個鍊錶的結點除了儲存資料之外,還需要記錄鏈上的下乙個結點的位址,記錄下個結點位址的指標叫作後繼指標 next 頭結點用來記錄鍊錶的基位址,可以遍歷得到整...