資源簡(jiǎn)介 鏈表的應(yīng)用導(dǎo)學(xué)案小明有一組數(shù)據(jù)按照升序排序的數(shù)據(jù),用鏈表數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲(chǔ)。data=[[34,2][67,4][43,1][23,0][78,-1],[19,3]]head=5鏈表的遍歷:請(qǐng)用鏈表遍歷的方式,將該數(shù)據(jù)以升序的方式進(jìn)行輸出。算法思路:設(shè)計(jì)的變量及作用:輸出的格式如下所示[19,23,34,43,67,78]p=head鏈表的插入操作鏈表數(shù)據(jù)結(jié)構(gòu)的優(yōu)勢(shì)在于增加刪除數(shù)據(jù),非常方便。請(qǐng)模擬往程序中輸入任意一個(gè)整數(shù)x,將其插入鏈表data,使得鏈表數(shù)據(jù)依舊保持升序。x=int(input(“請(qǐng)輸入一個(gè)正整數(shù):”))p,q=head,head算法思路:設(shè)計(jì)的變量及作用:if q==head:else:鏈表的刪除操作請(qǐng)模擬往程序中輸入鏈表中已經(jīng)存在的數(shù)字out,將其從鏈表data中刪除,使得鏈表數(shù)據(jù)依舊保持升序。算法思路:設(shè)計(jì)的變量及作用:m=random.randint(0,len(data)-1)out=data[m][0]鏈表的應(yīng)用鏈表反轉(zhuǎn)已知有鏈表data如下所示,請(qǐng)將鏈表進(jìn)行反轉(zhuǎn),使原鏈表按照逆序進(jìn)行連接。(1)畫出下方鏈接data的邏輯數(shù)據(jù)結(jié)構(gòu):data=[[34,2][67,4][43,1][23,0][78,-1],[19,3]]head=5方法一:原地反轉(zhuǎn)法算法思路:設(shè)計(jì)的變量及作用:方法二:頭插法data=[[34,2][67,4][43,1][23,0][78,-1],[19,3]]head=5算法思路:設(shè)計(jì)的變量及作用:(2)鏈表的合并算法思路:設(shè)計(jì)的變量及作用:現(xiàn)有兩組升序排序的數(shù)據(jù),分別存儲(chǔ)在鏈表data_a和data_b中,請(qǐng)將兩個(gè)鏈表進(jìn)行合并,使合并后的數(shù)據(jù)依舊保持升序。data_a=[[34,2][67,4][43,1][23,0][78,-1],[19,3]]head_a=5data_b=[[29,3][88,4][98,-1][49,1][2,5],[11,0]]head_b=4(3)刪除無序鏈表中重復(fù)元素將鏈表中重復(fù)出現(xiàn)的數(shù)據(jù)所在節(jié)點(diǎn)刪除,請(qǐng)完成下方方法一的填空,并說一說兩種方法的思路。方法一:算法思路:設(shè)計(jì)的變量及作用:a=[[0,3],[1,2],[1,4],[0,1],[0,5],[2,-1]]dele(a,0)def dele(a,head):pre=head;p=a[head][1]while p!=-1:q=headflag=FalseWhile____________:if a[q][0]==a[p][0]:_______________p=a[p][1]flag=Truebreakif not flag:pre=pp=a[p][1]算法思路:設(shè)計(jì)的變量及作用:方法二:def guess(cur):q=cur;p=a[cur][1]while p!=-1:if a[p][0]==a[cur][0]:a[q][1]=a[p][1]p=a[p][1]else:q=pp=a[p][1]returna=[[1,1],[2,2],[3,3],[3,4],[4,5],[3,6],[5,-1]]head=0cur=headwhile a[cur][1]!=-1:guess(cur)cur=a[cur][1]cur=headwhile cur!=-1:print(a[cur][0],end=””)cur=a[cur][1] 展開更多...... 收起↑ 資源預(yù)覽 縮略圖、資源來源于二一教育資源庫(kù)