#include #include #define error 0
#define ok 1
#define overflow -1
#define true 1
#define false 0
#define init_size 5
typedef int elemtype;
typedef int status;
typedef struct list list;
void initlist(list &l)
//獲取元素
elemtype getelem(list &l, int index)
status extendcapacity(list &l)
l.elem = newelem;
l.capacity = l.capacity * 2 + 1;
return ok;
}status addelem(list &l, elemtype e) ;
status insertelem(list &l, elemtype e, int index)
l.elem[index] = e;
l.length++;
return ok;
}status deleteelem(list &l, int index) lnode, *linklist;
void createlist(linklist &l)
//初始化並輸入n個元素
void createlist(linklist &l,int n)
//正序 後插法
linklist p = l;
for(int i=0;i>new_node->data;
new_node->next = null;//init
p->next = new_node;
p = p->next;//point tail elem
}}//取l中第i個元素返回
elemtype getelem(linklist l, int i)
if (!p || j > i-1)
return p->next->data;
}//在地i個位置插入節點
void insert(linklist &l, int i, elemtype e)
if (!p || j > i)
lnode *new_node = new lnode;
new_node->data = e;
new_node->next = null;
//p是最後乙個節點
if(!p->next)
new_node->next = p->next;
p->next = new_node;
}//刪除l中第i個元素
void del(linklist &l, int i)
if (!(p->next) || j > i - 1)
lnode *del_node = p->next;
//如果del_node後不存在節點
if (!del_node->next)
//連線鍊錶
p->next = p->next->next;
delete (del_node);
}void printlist(linklist l)
}//test
int main() {
linklist l;
createlist(l,3);//1 2 3
insert(l,2,222);
printlist(l);
del(l,2);
cout<<"-------------"《線性表使用陣列實現, 特點是讀取快, 插入刪除慢;
鍊錶使用乙個個node節點, 使用指標關聯node之間的關係, 特點是讀取慢, 插入刪除快;
極客技術空間:
資料結構 線性表鏈式儲存結構
鏈式儲存 用一組任意的儲存單元儲存線性表中的資料元素。用這種方法儲存的線性表簡稱線性鍊錶。儲存鍊錶中結點的一組任意的儲存單元可以是連續的,也可以是不連續的,甚至是零散分布在記憶體中的任意位置上的。鍊錶中結點的邏輯順序和物理順序不一定相同。即不要求邏輯上相鄰的元素在物理位置上也相鄰 為了正確表示結點間...
資料結構 線性表(鏈式儲存結構)
用一組任意的儲存單元儲存線性表的資料結構,這組儲存單元可以是連續的,也可以是不連續的。對資料結構ai來說,除了儲存其本身的資訊之外,還需儲存乙個指示其後繼的資訊 即直接後繼的儲存位置 資料域 儲存資料元素資訊的域。指標域 儲存直接後繼位置的域。資料域 指標域 結點 n個結點鏈結成乙個鍊錶,即為線性表...
資料結構 線性表鏈式儲存
對於線性鍊錶,有兩種表示方法,一種是包含頭節點的情況,如下圖 一種是不包含頭節點的情況,如下圖 本文中對線性鍊錶的表示,利用的是帶頭節點的定義方式。使用c 實現了線性鍊錶建立,初始化,刪除,插入,清空,遍歷,有序鍊錶合併等操作。煉表頭 頭指標 頭結點 煉表頭 指的是線性表第乙個元素所在結點 頭指標 ...