單鏈表中,在c語言可以用結構體指標描述:
[cpp]view plain
copy
typedef
struct
node
node;
typedef
struct
node * linklist
有一點很重要
比如我隨便畫乙個。。
千萬別也成
p->next=s;s->netx=p->next;
正確的是
s->netx=p->next;p->next=s;
自己好好想想,不打了。記得是逆序就行了~
好,進入正題,單鏈表第i個資料插入節點的演算法思路:
1.宣告一節點p指向鍊錶第乙個結點,初始化j從1開始;
2.當j3.若到鍊錶末尾p為空,則說明第i個元素不存在;
4.否則查詢成功,在系統中生成乙個空節點s;
5.將資料元素e賦給s->data;
6.單鏈表插入標準語句s->next=p->next;p->next=s;
7.返回成功。
實現**演算法如下:
[cpp]view plain
copy
//在l中第i個位置之前插入新的資料元素e,l的長度加1
intlistinsert(linklist *l,
inti,elmetype e)
if(!p || j>=1)
return
error;
s = (linklist)malloc(sizeof
(node));
//生成新節點
s->data = e;
s->next = p->next;
p->next = s; //順序絕對不變
return
ok;
}
如何刪除呢?其實只要q=p->next;p->next->q->next;
演算法思路省略,直接給出**:
[cpp]view plain
copy
//刪除l第i個元素,並用e返回其值,l的長度減1
intlistinsert(linklist *l,
inti,elmetype e)
if(!(p->next) || j>=1)
return
error;
q = p->next;
p->next = q->next;
*e = q->data;
free(q); //釋放記憶體
return
ok;
}
單向鍊錶簡單的介紹新增和刪除
說一下單向鍊錶 鍊錶實際上是線性表的鏈式儲存結構,與陣列不同的是,它是用一組任意的儲存單元來儲存線性表中的資料,儲存單元不一定是連續的,且鍊錶的長度不是固定的,鍊錶資料的這一特點使其可以非常的方便地實現節點的插入和刪除操作 不利於查詢。說一下陣列 陣列是一種連續儲存線性結構,元素型別相同,大小相等 ...
C 鍊錶節點的新增和刪除介紹
目錄 鍊錶是一種動態的資料結構,因為在建立鍊錶時,不需要知道鍊錶的長度,只需要對指標進行操作。鍊錶的節點包括兩部分,分別是 資料域和 指向下乙個節點的 指標域。struct node struct node createlist struct node createnode int data 節點的...
鍊錶的新增,查詢,刪除
include include struct node 結點結構體 struct node head null 無結點時指向空 struct node tail null 頭尾指標 建立鍊錶,包括尾新增和頭新增 void addtail int data else tail sta 兩者的結構體是相...