首先建立結構體linklist以及全域性指標head作為表頭,具體不在贅述,除此之外本次只詳細描述尾插法,頭插法不再述說。 建立
宣告一結點q和計數器變數i;
初始化一空鍊錶p;
讓p的頭結點的指標指向null,即建立乙個帶頭結點的單鏈表;
迴圈實現後繼結點的賦值和插入。
尾插法**如下:
linklist *create()
if(head!=null)
q->next=null; //尾節點的指標域置空
}
插入單鏈表第i個資料插入結點的演算法思路:
宣告一結點p指向煉表頭結點,初始化j從1開始;
當j<1時,就遍歷鍊錶,讓p的指標向後移動,不斷指向下一結點,j累加1;
若到鍊錶末尾p為空,則說明第i個元素不存在;
否則查詢成功,在系統中生成乙個空結點s;
將資料元素e賦值給s->data;
單鏈表的插入剛才兩個標準語句;s->next = p->next;p->next = s;
返回成功。
**如下:
linklist phead;//鍊錶
int insert(linklist* pnode)
//第二種情況,pnode節點num值小於等於煉表頭結點的num值(num 鍊錶判定值)
if(pnode->num<=phead->num)
//第三種情況,迴圈查詢正確位置
p=phead;
q=phead->next;
while(q!=null)
else
break;
} //將pnde節點插入正確的位置
p->next=pnode;
pnode->next=q;
}
刪除單鏈表第i個資料刪除結點的演算法思路:
宣告結點p指向鍊錶第乙個結點,初始化j=1;
當j<1時,就遍歷鍊錶,讓p的指標向後移動,不斷指向下乙個結點,j累加1;
若到鍊錶末尾p為空,則說明第i個元素不存在;
否則查詢成功,將欲刪除結點p->next賦值給q;
單鏈表的刪除標準語句p->next = q->next;
將q結點中的資料賦值給e,作為返回;
釋放q結點。
可以這樣:p->next = p->next->next;
也可以是:q=p->next; p->next=q->next;
**如下:
linklist phead;//鍊錶
void del(int num)
//第三種情況,迴圈查詢刪除位置
q=p->next;
while(q!=null)
if(q->num>num)
return;
p=q;
q=q->next;
}}
遍歷
獲得鍊錶i個資料的演算法思路:
宣告乙個結點p指向鍊錶第乙個結點,初始化j從1開始;
當j直到鍊錶末尾p為空,輸出每個位置的資料元素。
**如下:
linklist phead;//鍊錶
void print()
}
#include #include //定義結構體型別struct node
struct node;
//用typedef定義結構體型別lnode、結構指標型別linklist
typedef struct node lnode, *linklist;
//函式原型宣告
void build(linklist head); //建立帶頭結點的單鏈表head
void disp(linklist head); //輸出帶頭結點的單鏈表head
int del(linklist head,int x); //刪除單鏈表head中元素值為x的結點
void insert(linklist head,int x); //在單鏈表head(該單鏈表按元素值公升序)中插入新元素x
void freelink(linklist head); //徹底釋放單鏈表
int main()
void build(linklist head) }
void disp(linklist head) }
//若找到,刪除,返回1,若找不到,返回-1
int del(linklist head,int x)
//若找不到值為x的元素,返回0
if(cur==null)
return 0;
//刪除cur所指結點
pre->next=cur->next;
free (cur);
return 1;
}//徹底釋放單鏈表
void freelink(linklist head)
}//在單鏈表head(該單鏈表按元素值公升序)中,插入新元素x
void insert(linklist head,int x)
//在在pre和cur之間插入新節點s
s->next=cur;
pre->next=s;
}
單鏈表的遍歷 插入 刪除
單鏈表由乙個個的節點組成,節點由兩個部分組成 資料域和指標域。資料域就是儲存這個節點的資料,這沒什麼說的。指標域存放的指標指向的是下乙個結點,正是因為指標域的存在,把存在記憶體不連續區域裡的各個結點連線了起來。單鏈表最後乙個結點的指標域為空null。頭結點與頭指標的異同 頭結點放在第一元素的結點之前...
單鏈表 建立插入刪除
建立乙個工程,在其中新增 list.h 標頭檔案,list.cpp原始檔和main.cpp原始檔。標頭檔案list.h中進行資料型別抽象 adt 宣告了乙個結構體和對應的操作,如下 ifndef list h define list h typedef struct list list 函式宣告 l...
單鏈表的建立 插入 刪除
單鏈表的初始化 建立 插入 查詢 刪除 include include typedef int elemtype 定義結點型別 typedef struct node node,linkedlist 單鏈表的初始化 linkedlist linkedlistinit l next null 將nex...