基礎資料結構 線性表鏈式實現

2021-09-30 12:19:04 字數 1924 閱讀 6351

以下**為線性表的鏈式實現,在vs2012下測試通過。**比較簡單,所以注釋只是標明了函式功能,如果有錯誤之處還請不吝賜教。

#include #include //鍊錶元素結構體

typedef struct listele

listele;

//鍊錶結構體

typedef struct list

list;

//構造乙個新的鍊錶

list* createlist()

//清空鍊錶

int clearlist(list *&l)

l->head = null;

l->length = 0;

temp = null;

tempnext = null;

return 1;

}//銷毀鍊錶(l指標變為空指標)

void destroylist(list *&l)

//獲取鍊錶長度

int getlength(list *l)

//判斷鍊錶是否為空

int isempty(list *l)

//指定位置插入新元素

int insertelem(list *&l, int index, int *e)

if(index < 0 || index > l->length || !e) return -1;

listele *temp = l->head;

listele *newele = (listele*)malloc(sizeof(listele));

newele->data = *e;

int i = 0;

for(;i < index -1 && temp; ++i, temp = temp->next);

if(i == index -1)

else if(index == 0)

return -1;

}//在鍊錶後新增新元素

else if(i == l->length -1)

return -1;

}//列印鍊錶各個元素

void showlist(list *l)

if( !l->head || l->length == 0)

listele *temp = l->head;

int i = 0;

for(; ilength ; ++i)

printf("\n");

return ;

}//刪除指定位置元素

int deleteelem(list *&l, int index)

else if(index == 0)

return -1;

}//獲取鍊錶指定位置元素值

int getelem(list *l, int index, int *&e)

e = null;

return -1;

}//在指定位置後查詢某一特定元素的位置

int findelem(list *l, int start, int *e)

return -2;

} return -1; }

//獲取某一特定元素前驅

int getpriorelem(list *l, int *e, int *&prior)

} temp = temp->next;

} prior = null;

return -2;

}//獲取某一特定元素後繼

int getnextelem(list *l, int *e, int *&next)

next = null;

return -2;

} temp = temp->next;

} next = null;

return -2;

}int main()

資料結構 線性表鏈式儲存

對於線性鍊錶,有兩種表示方法,一種是包含頭節點的情況,如下圖 一種是不包含頭節點的情況,如下圖 本文中對線性鍊錶的表示,利用的是帶頭節點的定義方式。使用c 實現了線性鍊錶建立,初始化,刪除,插入,清空,遍歷,有序鍊錶合併等操作。煉表頭 頭指標 頭結點 煉表頭 指的是線性表第乙個元素所在結點 頭指標 ...

資料結構 線性表(鏈式儲存)

1 順序表 需要一片連續的記憶體空間,成員可以隨機訪問,訪問效率高 插入刪除資料存在資料搬移的現象,效率低 儲存密度高 鍊錶的特點 不需要連續的記憶體空間,不能隨機訪問元素,訪問效率低 插入刪除資料不存在資料搬移的現象,效率高 儲存密度比較低 2 無頭鍊錶 第乙個節點為資料節點,加入刪除第乙個節點,...

資料結構 線性表(鏈式 單)

線性表是最常用且最簡單得一種資料結構。簡言之,乙個線性表是n個資料元素得有限序列。typedef int elemtype typedef struct lnodelnode,linklist ifndef linklist h define linklist h include include t...