單鏈表的常見基礎演算法(二)

2021-09-29 10:14:54 字數 2646 閱讀 9495

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 ...