獲取鍊錶第i個資料的演算法思路:
1. 宣告乙個結點p指向鍊錶第乙個結點,初始化j從1開始;
2. 當j
3. 若到鍊錶末尾p為空,則說明第i個元素不存在;
4. 否則查詢成功,返回結點p的資料。
code follow:
struct getelem(linklist l, int i, elemtype *e)
if (!p || j>i)
return error;
*e = p->data;
return ok;
}單鏈表第i個資料插入結點的演算法思路:
1.宣告一結點p指向鍊錶第乙個結點,初始化j從1開始;
2. 當j
3. 若到鍊錶末尾p為空,則說明第i個元素不存在;
4. 否則查詢成功,在系統中生成乙個空結點s;
5.將資料元素e賦值給s—>data;
6. 單鏈表的插入標準語句s->next=p->next; p->next=s;
7.返回成功。
status listinsert(linklist *l, int i, elemtype e)
if (!p || j > i)
return error;
s = (linklist)mallco(sizeof(node));
s->data = e;
s->next = p->next;
p->next = s;
return ok;
}單鏈表第i個資料刪除結點的演算法思路:
1. 宣告一結點p指向鍊錶第乙個結點,初始化j從1開始;
2. 當j
3. 若到鍊錶末尾p為空,則說明第i個元素不存在;
4. 否則查詢成功,將欲刪除的結點p->next 賦值給q;
5. 單鏈表的刪除標準語句 p->next=q->next;
6. 將q結點的資料賦值給e作為返回;
7. 釋放q結點;
7.返回成功。
status listdelete(linklist *l, int i, elemtype *e)
if (!(p->next) || j>i )
return error;
q = p->next;
p->next = q->next;
*e = q->data;
free(q);
return ok;
}單鏈表整表建立的演算法思路:
1、 宣告一結點p和計數器變數i;
2、 初始化空鍊錶l;
3、讓l的頭結點的指標指向null,及建立乙個帶頭結點的單鏈表;
4、迴圈:
生成乙個新結點賦值給p
隨機生成一數字賦值給p的資料域p->data;
將p插入到頭結點與前乙個新結點這之間。
頭插法void createlisthead(linklist *l, int n)
}尾插法
void createlisttail(linklist *l, int n)
(*l)->next = null;
return ok;
}
單鏈表的刪除第i個元素
刪除操作圖示 a2的節點q,要實現q的刪除,就是讓他的前繼節點p繞過a2直接指向後繼節點a3。p next p next next 單鏈表第i個資料刪除結點的演算法思路 1.宣告結點p指向鍊錶第乙個結點,初始化j 1 2.當jnext賦值給q 4.單鏈表的刪除標準語句p next q next,將q...
刪除單鏈表中第i個節點
單鏈表的刪除操作是將單鏈表的第i個節點刪去。具體步驟如下 1 找到節點ai 1的儲存位置p,因為在單鏈表中節點ai的儲存位址是在其直接前趨節點ai 1的指標域next中 2 令p next指向ai的直接後繼節點ai 1 3 釋放節點ai的空間 include include typedef stru...
資料結構單鏈表插入 整表刪除 整表建立
0 單鏈表插入 單鏈表插入的時間複雜度 從頭查詢到插入點 o n 執行插入操作 o 1 單鏈表刪除 status listdelete linklist l,int i,elemtype e if p next j i q p next p next q next e q data free q r...