//巨集定義
#define failed 0
#define success 1
typedef
struct dnode
dlinknode;
//建立鍊錶
//**********************頭插法**********************//
dlinknode*
createdlinklistf
(int a,
int n)
return l;
}//**********************尾插法**********************//
dlinknode*
createdlinklistr
(int a,
int n)
r->next =
null
;return l;
}//**********************鍊錶初始化**********************//
dlinknode*
initdlinklist()
//**********************銷毀線性表**********************//
void
destroydlinklist
(dlinknode* l)
free
(s);
}//**********************判斷空表**********************//
intdlinklistempty
(dlinknode* l)
//**********************求表長**********************//
intdlinklistlength
(dlinknode* l)
return n;
}//**********************輸出資訊**********************//
void
dispdlinklist
(dlinknode* l)
printf
("\n");
}//**********************得到第i個值**********************//
intgetdlinkelem
(dlinknode* l,
int i,
int* e)if(
!s)return failed;
else
}//**********************得到e的索引**********************//
intlocatedlinkelem
(dlinknode* l,
int e)
if(s->next ==
null
)return failed;
else
return i;
}//**********************插入元素**********************//
intdlinklistinsert
(dlinknode* l,
int i,
int e)if(
!s )
return failed;
else
}//**********************刪除元素**********************//
intdlinklistdelete
(dlinknode* l,
int i,
int* e)if(
!p)return failed;
p->prior->next = p->next;
if(p->next)
p->next->prior = p->prior;
free
(p);
return success;
}
//將雙向鍊錶的元素進行倒序處理
void
dlinkreverse
(dlinknode* l)
}//使帶頭結點的雙向鍊錶元素有序遞增
void
sortdlink
(dlinknode* l)
}
資料結構 線性表鏈式儲存結構
鏈式儲存 用一組任意的儲存單元儲存線性表中的資料元素。用這種方法儲存的線性表簡稱線性鍊錶。儲存鍊錶中結點的一組任意的儲存單元可以是連續的,也可以是不連續的,甚至是零散分布在記憶體中的任意位置上的。鍊錶中結點的邏輯順序和物理順序不一定相同。即不要求邏輯上相鄰的元素在物理位置上也相鄰 為了正確表示結點間...
資料結構 線性表(鏈式儲存結構)
用一組任意的儲存單元儲存線性表的資料結構,這組儲存單元可以是連續的,也可以是不連續的。對資料結構ai來說,除了儲存其本身的資訊之外,還需儲存乙個指示其後繼的資訊 即直接後繼的儲存位置 資料域 儲存資料元素資訊的域。指標域 儲存直接後繼位置的域。資料域 指標域 結點 n個結點鏈結成乙個鍊錶,即為線性表...
資料結構 線性表鏈式儲存
對於線性鍊錶,有兩種表示方法,一種是包含頭節點的情況,如下圖 一種是不包含頭節點的情況,如下圖 本文中對線性鍊錶的表示,利用的是帶頭節點的定義方式。使用c 實現了線性鍊錶建立,初始化,刪除,插入,清空,遍歷,有序鍊錶合併等操作。煉表頭 頭指標 頭結點 煉表頭 指的是線性表第乙個元素所在結點 頭指標 ...