以下**為線性表的鏈式實現,在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...