單鏈表第i個元素獲取 插入 刪除 整表建立 刪除

2021-08-20 01:21:11 字數 1576 閱讀 9557

獲取鍊錶第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...