#include
#include
#define true 1
#define false 0
#define status int
typedef struct datatype;
typedef struct node
node;
typedef struct node *linklist;
//單鏈表的讀取:用e返回l中第i個元素的值
status getelem(linklist l,int i,datatype *e)
if(!p || j>i //i<1 || i>listlength(l);
*e = p->data;
}//單鏈表的插入:在l中第i個節點位置之前插入新的資料元素e,l的長度加一
status listinsert(linklist *l,int i,datatype e)
if(!p || j>i)
s = (linklist)malloc(sizeof(node));
s->data = e;
s->next = p->next;
p-next = s;
return true;
}//單鏈表的刪除:刪除l的第i個節點,並用e返回其值,l的長度減1;
status listdelete(linklist *l,int i,datatype *e)
if(!p || j>i)
q = p->next;
p = q->next;
*e = q->data;
free(q);
return true;
}int main(int argc,char *argv)
單鏈表的讀取插入刪除
1單鏈表的讀取 宣告乙個指標p指向鍊錶中的第乙個結點,初始化j從1開始 當jstatus getelem linklist l,int i,elemtype e if p j i return error e p data return ok 2 單鏈表的插入 宣告乙個指標p指向鍊錶中的頭結點,初始...
3 2 2 單鏈表的讀取 插入和刪除
1 單鏈表的讀取 演算法思路 1 宣告乙個結點 p 指向鍊錶第乙個結點 這裡是儲存資料的第乙個節點,不是頭結點 初始化 j 從 1 開始 2 當 j i 時,就遍歷鍊錶,讓 p 的指標向後移動,不斷指向下一結點,j 累加 1 3 若到鍊錶末尾 p 為空,則說明第 i 個元素不存在 4 否則查詢成功,...
單鏈表的插入和刪除
常見的資料結構只有兩種 1 陣列 2 鍊錶 陣列中的元素是連續儲存的,而鍊錶的元素則可以不連續,只需要有指標指向下乙個元素即可。因此鍊錶適合儲存插入刪除比較頻繁的一組資料。另外鍊錶的儲存空間是動態的,不必預先分配指定的空間大小。下面介紹鍊錶的幾種常見操作。首先先定義乙個鍊錶 struct linkl...