1、求單鏈表中的乙個最小值
2、單鏈表逆置
3、l為帶頭結點的單鏈表,實現從尾到頭反向輸出每個結點值
4、遞迴刪去不帶頭結點的單鏈表中所有值為x的結點
5、無序鍊錶中刪除所有值為x的結點並釋放其空間
6、帶頭結點的單鏈表中刪除所有介於給定的兩個值之間的元素
7、帶頭結點的單鏈表中刪除乙個最小值結點
8、對帶頭結點的單鏈表l,設計乙個演算法使其元素遞增有序
9、按遞增次序輸出單鏈表中各節點的資料元素,並釋放結點所站的儲存空間
lnode getmin
(linklist &l)
return minp;
}
//方法一:採用頭插法
linklist reverse
(linklist &l)
return l;
}//方法二:通過尾指標和頭指標的移動
linklist reverse
(linklist &l,lnode *r)
return l;
}
方法一:逆置演算法,先將鍊錶逆置,然後遍歷結點依次輸出
方法二:使用遞迴
void
r_print
(linklist &l)
}
void
del_x
(linklist &l,elemtype x)
else
}
//方法一:用一般在單鏈表中刪除結點的方法
void
del_x
(linklist &l,elemtype)
else}}
方法二:尾插法建立單鏈表
void
del(linklist &l,elemtype x)
else
} r=
null
;}
void
del_range
(linklist &l,elemtype x,elemtype y)
else
}}
void
del_min
(linklist &l)
pre=p;
p=p-
>next;
}//刪除minp結點
minpre=minp-
>next;
free
(minp)
;}
//首先構造只含乙個資料結點的鍊錶,然後每次遍歷鍊錶中的乙個元素,找合適的位置將其插入【直接插入排序演算法的思想】
void
sort
(linklist &l)
//將p結點插入pre結點之後
p->next=pre-
>next;
pre-
>next=p;
p=r;}}
```cpp
void
sort
(linklist &l)
q=q-
>next;
} p=p-
>next;
}}
//對鍊錶進行遍歷,每次找出鍊錶中最小值的元素,輸出並刪除
void
printmintomax
(linklist &l)
pre=p;
p=p-
>next;
}//最小值找到
print
(minp-
>data)
;//刪除
minpre-
>next=minp-
>next;
free
(minpre)
;// 一次輸出完成
}//釋放頭結點
free
(l);
}
void
getelem
(linklist l,
int k)
n=length-k+1;
//查詢鍊錶倒數第k個位置的結點相當於查詢鍊錶中第n個結點的位置
if(n<=0)
return
; p=l-
>next;
while
(k!=0)
cout<>data<}
//入隊
void
enqueue_linklist
(linklist &r,elemtype x)
//出隊
void
dequeue_linklist
(linklist &r,elemtype x)
free
(q);
}
bool
isloop
(linklist l)
if(p1==p2)
reutrn true
;else
return
false
;}
單鏈表基礎演算法
linklist.h 標頭檔案 ifndef linklist h define linklist h typedef char elemtype typedef struct node 結點型別定義 node,linklist linklist為結構指標型別 node locate linklis...
常見演算法 反轉單鏈表
使用3個指標,分別指示當前節點,當前節點的前乙個節點,以及後乙個節點。初始化前乙個節點為空。當節點個數大於1時,每遍歷乙個節點,更新它的next指標指向前乙個節點。同時更新前乙個節點和後乙個節點。直至當前節點指標為空,返回前乙個節點的指標。include using namespace std st...
演算法進行時 單鏈表(二)常見題型01
1.用遞迴演算法,刪除帶結點的單鏈表l中所有值為x的結點。由於是帶頭結點的,所以並且查詢值為x的結點時,從l next的值開始判斷,如果l next的data等於x,那麼就要將l next的值刪除並且將l的後繼結點換成l next的後繼結點,並且將它刪除。lnode p l next l next ...