資源簡(jiǎn)介 第二章 數(shù)據(jù)的存儲(chǔ)方式 章節(jié)測(cè)試一、選擇題1.有如下圖所示的單向鏈表:從頭指針head指向的節(jié)點(diǎn)開始查找數(shù)據(jù)元素“5”,并刪除該節(jié)點(diǎn),下列說法正確的是( )A.共需查找3次B.刪除數(shù)據(jù)元素“5”的節(jié)點(diǎn),后續(xù)節(jié)點(diǎn)需要移動(dòng)3次C.頭指針head將指向數(shù)據(jù)元素“7”的節(jié)點(diǎn)D.操作完成后,鏈表中數(shù)據(jù)元素的個(gè)數(shù)為6個(gè)2.某Python程序如下:a=[[3,2],[2,3],[7,1],[1,0]]p=head=0while a[p][1]!=head: print(a[p][0],end='->') p=a[p][1]print(a[p][0])程序運(yùn)行后,輸出的結(jié)果是( )A.3->7->2->1 B.3->2->7->1 C.1->7->3->2 D.3->7->1->23.使用鏈表結(jié)構(gòu)模擬某校游玩路線,鏈表a中每一個(gè)節(jié)點(diǎn)包含三個(gè)數(shù)據(jù),第1個(gè)為景點(diǎn)名稱,第2個(gè)為預(yù)計(jì)游玩時(shí)間(單位:分鐘),第3個(gè)為下一個(gè)景點(diǎn)指針。該校可以從多個(gè)景點(diǎn)開始游玩,但只能從“南大門”離開,輸出顯示從各景點(diǎn)進(jìn)入路線及預(yù)計(jì)總時(shí)間的代碼如下。a=[["校訓(xùn)石",21,2],["行政樓",40,2],["風(fēng)雨操場(chǎng)",50,5],["麗澤湖",30,4],["西餐廳",60,5],["南大門",20,-1]]head=[0,1,3]for i in range(len(head)): (1) s=a[p][1] while a[p][2]!=-1: print(a[p][0],end="→") (2) (3) print(a[p][0]) print("預(yù)計(jì)時(shí)間:",s,"分鐘")上述程序劃線處的可選代碼有:①p=head ②p=head[i] ③s=s+a[p][1] ④p=a[p][2]則(1)、(2)、(3)處代碼依次為( )A.①③④ B.①④③ C.②③④ D.②④③4.下列數(shù)據(jù)中,不屬于列表的是( )A.{10,15,20,25} B.[10,1.5,20,2.5]C.[10,15,20,25] D.[a,"b",20,25]5.使用鏈表結(jié)構(gòu)模擬某景區(qū)游玩路線,鏈表a中每一個(gè)節(jié)點(diǎn)包含三個(gè)數(shù)據(jù),第1個(gè)為景點(diǎn)名稱,第2個(gè)為預(yù)計(jì)游玩時(shí)間(單位:分鐘),第3個(gè)為下一個(gè)景點(diǎn)指針。景區(qū)可以從多個(gè)景點(diǎn)的大門進(jìn)入,但只能從"天梯"離開,輸出顯示各大門進(jìn)入路線及預(yù)計(jì)總時(shí)間的代碼如下。a=[["迎客松",21,2],["激流勇進(jìn)",40,2],["天空棧道",50,5],["一線天",30,4],["飛來峰",60,5],["天梯",20,-1]head=[0,1,3]for i in range(len(head)):(1) s=a[p][1] while a[p][2]! =-1: print(a[p][0],end="-->") (2) (3) print(a[p][0]) print("預(yù)計(jì)時(shí)間:",s,"分鐘")上述程序劃線處的可選代碼有:①p=head ②p=head[i] ③s=s+a[p][1] ④p=a[p][2]則(1),(2),(3)處代碼依次為( )A.①③④ B.①④③ C.②③④ D.②④③6.使用列表模擬單向鏈表,鏈表中p節(jié)點(diǎn)的a[p][0]存儲(chǔ)數(shù)據(jù),a[p][1]存儲(chǔ)其后繼節(jié)點(diǎn)的指針。編寫Python程序刪除鏈表中所有的偶數(shù)項(xiàng)(頭節(jié)點(diǎn)為該鏈表的第1項(xiàng)),部分代碼如下:p=head #head指向該鏈表的頭節(jié)點(diǎn)while p!=-1:q=a[p][1] if (1) :(2)p=a[p][1]上述程序段劃線處可選語(yǔ)句為①q!=-1 ②a[q][1]!=-1 ③a[q][1]=a[p][1] ④a[p][1]=a[q][1]則(1)(2)處填入的語(yǔ)句依次為( )A.①③ B.①④ C.②③ D.②④7.利用列表模擬某單向非循環(huán)鏈表a(其中可能存在已被刪除的節(jié)點(diǎn)),下列程序運(yùn)行完畢后,變量p肯定表示尾節(jié)點(diǎn)的節(jié)點(diǎn)位置的是( )A. B. C. D. 8.尋寶游戲中通過一個(gè)線索找到下一個(gè)線索,最好用下列數(shù)據(jù)組織形式中的( )來表示。A.?dāng)?shù)組 B.鏈表 C.棧 D.隊(duì)列9.用Python程序?qū)崿F(xiàn)刪除鏈表的倒數(shù)第n(n不大于鏈表長(zhǎng)度)個(gè)節(jié)點(diǎn),如n=2時(shí),鏈表更新為。部分代碼如下:# 讀入鏈表存儲(chǔ)在列表s中,head存儲(chǔ)鏈表的頭節(jié)點(diǎn),代碼略n=int(input())pl=p2=headwhile p2!=-1: if n>=0: (1) n -= l else: (2) p2 = s[p2] [1]if p1 == head : head=s[head] [1]else: (3)上述程序段中劃線處可選的語(yǔ)句為:①p1=s[p1][1] ②p2=s[p2][1] ③s[p1][1]=s[s[p1][1]][1] ④s[p2][1]=s[s[p2][1]][1]則(1)~(3)劃線處語(yǔ)句依次為( )A.①③④ B.①④③ C.②①④ D.②①③10.現(xiàn)采用新的排隊(duì)方案為小明、小紅、小麗、小輝四人排隊(duì),Python程序段如下:linklist=[["小明",1],["小紅",2],["小麗",3],["小輝",-1]]def reset(head): if linklist[head][1]==- 1 or head==- 1: return head else: new_head=reset(linklist[head][1]) linklist[linklist[head][1]][1]=head linklist[head][1]=- 1 return new headp=h=reset(0)while p!=- 1: print(linklist[p][0],end="") p=linklist[p][1]執(zhí)行該程序段后,輸出的結(jié)果是( )A.小明小紅小麗小輝 B.小明小輝小麗小紅C.小輝小麗小紅小明 D.小明小麗小紅小輝11.下列關(guān)于數(shù)組的描述,正確的是( )A.?dāng)?shù)組的大小是固定的,但可以有不同類型的數(shù)組元素B.?dāng)?shù)組的大小是可變的,但所有數(shù)組元素的類型必須相同C.?dāng)?shù)組的大小是固定的,所有數(shù)組元素的類型必須相同D.?dāng)?shù)組的大小是可變的,可以有不同類型的數(shù)組元素12.在Python中可以使用列表模擬單向鏈表,如鏈表中的節(jié)點(diǎn)p,a[p] [0]存儲(chǔ)p節(jié)點(diǎn)的數(shù)據(jù),a[p][1]存儲(chǔ)p指向后繼節(jié)點(diǎn)的指針。若要在p節(jié)點(diǎn)之后插入新的節(jié)點(diǎn)x(x作為p的新后繼節(jié)點(diǎn)),需要執(zhí)行的語(yǔ)句是( )A.a(chǎn)[p][1]=x; a[x][1]=a[p][1] B.a(chǎn)[x][1]=a[p][1]; a[p][1]=xC.a(chǎn)[p][0]=x; a[x][0]=a[p][0] D.a(chǎn)[x][0]=a[p][0]; a[p][0]=x13.設(shè)有一個(gè)5×8的二維數(shù)組a,若按行優(yōu)先的順序存儲(chǔ)數(shù)組元素,則元素a[3][5]前面元素的個(gè)數(shù)為( )A.21 B.22 C.29 D.3714.已知一個(gè)有7個(gè)節(jié)點(diǎn)的單向鏈表,設(shè)有頭指針head和尾指針tail,如右圖所示,下列操作需要遍歷多個(gè)節(jié)點(diǎn)的是( )A.刪除該鏈表中的最后一個(gè)節(jié)點(diǎn)B.刪除該鏈表中的第一個(gè)節(jié)點(diǎn)C.在該鏈表第一個(gè)節(jié)點(diǎn)前插入一個(gè)新節(jié)點(diǎn)D.在該鏈表最后一個(gè)節(jié)點(diǎn)后插入一個(gè)新節(jié)點(diǎn)15.運(yùn)用Python編程處理數(shù)據(jù)時(shí),經(jīng)常會(huì)用到pandas庫(kù),其中Series是一維數(shù)據(jù)結(jié)構(gòu),下圖程序運(yùn)行后的結(jié)果 A.水蜜桃 B.3 C.水蜜桃 D.“獼猴桃” ”水蜜桃”16.在單向鏈表如下圖所示,在data2與data3之間插入一個(gè)新節(jié)點(diǎn)data4(p指向data2,r指向data4。列表data來記錄鏈表數(shù)據(jù)域,列表next來記錄指針域),在以下選項(xiàng)中選擇正確的執(zhí)行步驟( )①next[p]= next[r] ②next[p]= r ③next[r]= p④next[r]= -1 ⑤next[r]= next[p] ⑥next[p]= -1A.③⑥ B.⑤② C.①④ D.⑤②④17.a(chǎn)數(shù)組定義如下:a=[2,5,0,3,6,8],則運(yùn)算表達(dá)式“a[1]+a[3]+a[5]”的結(jié)果為( )A.16 B.8 C.10 D.1318.有關(guān)數(shù)組特征描述中,下列說法不正確的是( )A.同一數(shù)組中,每個(gè)數(shù)組元素的數(shù)據(jù)類型是相同的B.通過數(shù)組名和下標(biāo)可以對(duì)數(shù)組中任意位置的數(shù)組元素進(jìn)行高效訪問C.?dāng)?shù)組的存儲(chǔ)空間固定不變D.?dāng)?shù)組是非順序存儲(chǔ)結(jié)構(gòu)19.設(shè)有數(shù)組定義語(yǔ)句:Dim a(5) As Integer,Listl 為列表框控件。下列給數(shù)組元素賦值的語(yǔ)句,錯(cuò)誤的是( )。A.a(chǎn)(3)=3B.a(chǎn)(3)=VAL(InputBox(“InputData”)C.a(chǎn)(3)=Listl.ListIndexD.a(chǎn)=Array(1,2,3,4,5,6)20.語(yǔ)句Dim a&(1 To 20),b#(2,-1 To 1)定義兩個(gè)數(shù)組,其類型分別為: ( )A.二維單精度實(shí)型數(shù)組和二雙精度型數(shù)組B.二維長(zhǎng)整型數(shù)組和二維單精度實(shí)型數(shù)組C.一維單精度實(shí)型數(shù)組和二維整型數(shù)組D.一維長(zhǎng)整型數(shù)組和二維雙精度型數(shù)組二、操作題21.為分析數(shù)據(jù)中各元素的變化情況,進(jìn)行如下定義:若在數(shù)組d中滿足d[a]<…d[i+1]>…>d[b],則從下標(biāo)a到下標(biāo)b區(qū)間的數(shù)據(jù)稱為一個(gè)波峰,下標(biāo)a到b的距離即為一個(gè)波峰的長(zhǎng)度(長(zhǎng)度≥3)。例如:數(shù)組d元素為“78,46,50,37,5,42,6,6,23”,存在2個(gè)波峰,分別是從d[1]到d[4]和d[4]到d[6],波峰長(zhǎng)度分別為4和3。編寫程序分析數(shù)據(jù),找出所有波峰,按波峰長(zhǎng)度降序排序(若波峰長(zhǎng)度相同,則按開始下標(biāo)升序),并輸出波峰長(zhǎng)度和開始到結(jié)束元素下標(biāo);若不存在,則輸出“不存在波峰”,運(yùn)行結(jié)果如圖所示。請(qǐng)回答下列問題:(1)根據(jù)題意,若數(shù)組d元素“23,14,35,31,13,20,3,40,10,10,9”,則最長(zhǎng)的波峰長(zhǎng)度為 。(2)執(zhí)行程序,若數(shù)組d元素“2,1,1,2”,則I處while語(yǔ)句中循環(huán)體的執(zhí)行次數(shù)是 。(3)實(shí)現(xiàn)上述功能的程序代碼如下,請(qǐng)?jiān)趧澗€處填入合適的代碼。#讀取待處理數(shù)據(jù),保存在數(shù)組d中,并顯示輸出,代碼略mt, i, n=[], 1, len(d)while iwhile i< n and d [i] < = d [i-1]: # I i += 1st = i-1 while i < n and d [i] > d [i-1]: i += 1if i==n orcontinue #跳出本輪循環(huán),然后繼續(xù)進(jìn)行下一輪循環(huán)while i < n and d [i] < d [i-1]:i += 1In=i-stif len(mt)==0:mt. append([In, st, -1]) #為mt追加一個(gè)列表元素head = 0; q = headelse: while p != -1 and( ): q = p p = mt [p] [2] if p==head: mt. append([In, st, head]) head= len(mt)-1 else: mt. append([In, st, p])=len(mt)-1if len(mt)==0:print(“不存在波峰”)else:print(“輸出結(jié)果(長(zhǎng)度:開始下標(biāo)~結(jié)束下標(biāo)):”)p = headwhile p != -1:print(mt [p] [0],“:”, mt [p] [1],“~”, mt [p] [0] + mt [p] [1] -1)p = mt [p] [2]22.某校針對(duì)高三高考成績(jī)進(jìn)行分析時(shí),其中有兩個(gè)主要指標(biāo):班級(jí)各科平均成績(jī)和班級(jí)總分平均成績(jī)。高考成績(jī)保存在“kscj.csv”文件中,格式如圖a所示,每行有四個(gè)項(xiàng)目,分別是“學(xué)號(hào)”、“姓名”、“學(xué)科”和“得分”,其中“學(xué)號(hào)”的前兩位表示班級(jí)編號(hào),后兩位表示該學(xué)生班內(nèi)編號(hào),兩種編號(hào)均從“01”遞增編號(hào)。設(shè)計(jì)如下Python程序,執(zhí)行后輸出上述兩個(gè)主要指標(biāo),如圖b所示。請(qǐng)回答下列問題。 圖a 圖b(1)通讀下列程序代碼后,可知程序中各班級(jí)隊(duì)列采用的數(shù)據(jù)結(jié)構(gòu)為 (選填,數(shù)組/鏈表)。(2)函數(shù)dataToClassQue功能:根據(jù)班級(jí)編號(hào),將數(shù)據(jù)分配到各個(gè)班級(jí)隊(duì)列。請(qǐng)?jiān)趧澗€處填入合適的代碼。def dataToClassQue(data) : num = len(data) for i in range(num): classId = data[i][0] if queInfo[classId-1][0]=-1 : queInfo[classId-1][0]=i else: queInfo[classId-1][1]=i return(3)函數(shù)dataProcessing功能:統(tǒng)計(jì)各班各科平均分和班總分平均分。請(qǐng)?jiān)趧澗€處填入合適的代碼。def dataProcessing(data): for classId in range(1 ,classNumber+1): ① score = [[0,0] for i in range(10)] #班級(jí)各科平均分和相應(yīng)人數(shù)初始化 p = queInfo[classId- 1][0] while p!=-1 : subjectId = data[p][3] total += data[p][4] ② score[subjectIld][1]+= 1 p = data[p][-1] for subjectId in range(10): if score[subjectId][1]!=0. t= ③ #函數(shù)round(t,x)用于對(duì)變量t四舍五入保留x位小數(shù) averageScore[classId- 1][subjectId] = round(t,1) averageScore[classId-1][10] = round(total/score[0][1],1) returndef readFile(data) : #讀入原始學(xué)生數(shù)據(jù),預(yù)處理后,存儲(chǔ)到data中,代碼略 #data數(shù)據(jù)格式:[[6,10,'白凱修',0,117,-1],[6,10, '白凱修',1,109,-1],……] #每條記錄的信息包括:班級(jí)編號(hào),班內(nèi)編號(hào),姓名,學(xué)科編號(hào),得分和預(yù)留值-1 return maxCassId #返回最大班級(jí)編號(hào)def fmtPrint(): #格式化輸出,如第15題圖b所示,代碼略。 return#主程序:course= {'語(yǔ)文':0, '數(shù)學(xué)':1, '英語(yǔ)':2, '物理':3, '化學(xué)':4, '生物':5, '政治':6, '歷史':7, '地理':8, '技術(shù)':9}data=[] #存儲(chǔ)讀入的數(shù)據(jù)classNumber = readFile(data)queInfo = [[-1,-1] for i in range(classNumber)] #初始化隊(duì)列,用于存儲(chǔ)各班級(jí)信息averageScore = [[0 for k in range(11)] for i in range(classNumber)]#初始化各班各科以及總分平均分dataToClassQue(data)dataProcessing(data)fmtPrint()23.某信息僅包含大寫字母,字符數(shù)不超過n*n(n*n為密鑰矩陣規(guī)模,n>0),加密過程如圖a所示:圖a圖b(1)已知密鑰矩陣按圖a中所示,若原文為“OK”,則加密后的密文是 ,若輸入的密文是“10,1,24,2,”,則原文是 。(2)根據(jù)上述加密算法編寫解密程序,運(yùn)行界面如圖c所示。請(qǐng)?jiān)趧澗€①②③處填上合適的代碼。圖cdef getmm(x,n): #獲取位置編號(hào)x的位置密鑰值 row=(x-1)%n col=(x-1)//n if① : row=n-1-row return key[row][col]#生成規(guī)模為n*n的密鑰矩陣,存入二維矩陣key中n=int(input("請(qǐng)輸入密鑰矩陣規(guī)模n:"))key=[[i*n+j+l for j in range(n)] for i in range(n)]#密文解密p=input("請(qǐng)輸入密文: ")mw=[]bmz=[]t=0for i in range (1en(p)):#依次讀取密文字符串中的數(shù)值,結(jié)果存入到列表mw中s=p[i]if s!=",":.②else:mw. append (t)t=0k=len (mw)for i in range(k//2) : #對(duì)密文解密,結(jié)果存入列表bmz中bmz. append (mw [2*i]- ③yw="for i in range (k//2): #轉(zhuǎn)換為字母輸出yw=ywtchr (bmz [i]-1+ord("A"))print("原文為:"+yw)24.某工程包含n個(gè)任務(wù)(編號(hào)為0-n-1),每天可以有多個(gè)任務(wù)同時(shí)進(jìn)行。某些任務(wù)之間有依賴關(guān)系,如圖a所示,任務(wù)4依賴于任務(wù)1,任務(wù)1依賴于任務(wù)2。即任務(wù)2完成后才可以開始任務(wù)1,任務(wù)1完成后才可以開始任務(wù)4,不存在一個(gè)任務(wù)依賴于多個(gè)任務(wù),或多個(gè)任務(wù)依賴于同一個(gè)任務(wù)的情況。現(xiàn)已對(duì)該工程的依賴關(guān)系進(jìn)行了梳理,結(jié)果如圖b所示,標(biāo)記“T”表示依賴關(guān)系需保留,標(biāo)記“F”表示依賴關(guān)系需刪除。根據(jù)每個(gè)任務(wù)完成所需的天數(shù)和梳理后的依賴關(guān)系,編寫程序,首先刪除標(biāo)記為“F”的依賴關(guān)系,然后計(jì)算工程最快完成所需的天數(shù),并以工程最快完成所需的天數(shù)為期限,計(jì)算每個(gè)任務(wù)最晚必須開始的時(shí)間。圖a 圖b請(qǐng)回答下列問題:(1)若某工程有6個(gè)任務(wù),任務(wù)間依賴關(guān)系如圖a所示,完成任務(wù)0~5所需天數(shù)分別為2,1,3,5,1,6,則工程最快完成需要 天。(2)定義如下erase(1st)函數(shù),參數(shù)1st列表的每個(gè)元素表示一個(gè)依賴關(guān)系。函數(shù)的功能是刪除標(biāo)記為“F”的依賴關(guān)系,返回保留的依賴關(guān)系的個(gè)數(shù)。def erase(lst): i=0 j=len(1st)-1 while i<=j: if 1st[i][2]=='T': i+=1 else: if lst[j][2]=='T': 1st[i]=1st[j] i+=1 j-=1 return i若1st列表依次存儲(chǔ)圖b所示的依賴關(guān)系,如1st[0]為[0,5,T],調(diào)用erase(lst)的數(shù),則語(yǔ)句"1st[i]=1st[j]”的執(zhí)行次數(shù)為 。(3)實(shí)現(xiàn)上述功能的部分Python程序如下,請(qǐng)?jiān)趧澗€處填入合適的代碼。def proc(n,lst,task): pr=[0]*n w=[0]*n #w[i]存放任務(wù)1最晚必須開始的時(shí)間 m=erase(1st) for i in① : task[lst[i][1]][1]=1st[i][0] pr[lst[i][0]]=1 c=[] days=0 #days存放工程最快完成所需的天數(shù) for I in range(n): if pr[i]==0: k=i s=0 while k!=-1: c.a(chǎn)ppend(k) s+=task[k][0] ② if s>days: days=s for i in range(n-1,-1,-1): k=c[i] if task[k][1]==-1: w[k]=days-task[k][0]+1 else: ③#輸出days,以及保存在w中的每個(gè)任務(wù)最晚必須開始的時(shí)間,代碼略```工程包含的任務(wù)數(shù)存入變量n任務(wù)間的依賴關(guān)系存入1st列表1st[0]包含3項(xiàng),任務(wù)1st[i][0]依賴于任務(wù)1st[i][1],1st[i][2]存放保留/刪除標(biāo)記,任務(wù)數(shù)據(jù)存入task列表task[i]包含2項(xiàng),task[i][0]為完成任務(wù)主所需天數(shù),task[i][1]的初值為-1代碼略```proc(n,1st,task)25.在Python語(yǔ)言中,可以使用列表來模擬鏈表節(jié)點(diǎn)的插入操作。以下Python程序段用二維列表來定義單向鏈表。如要在該鏈表中插入節(jié)點(diǎn),可以通過程序來修改相應(yīng)節(jié)點(diǎn)的指針達(dá)到目的。(1)如下圖所示,請(qǐng)根據(jù)程序補(bǔ)充完整未插入數(shù)據(jù)前的鏈表數(shù)據(jù)區(qū)域的值(依次填寫)① 、 、 、 。此時(shí)鏈表的頭指針的值是② 。(2)實(shí)現(xiàn)鏈表插入的 Python 程序如下,請(qǐng)?jiān)诔绦騽澗€處填入合適的代碼。data=[[8,-1],[7,4],[5,5],[6,0],[1,3],[2,1]] # 定義單向鏈表head=2 leng=len(data)pos=int(input("請(qǐng)輸入要插入的位置(0~%d)之間:"%(leng)))val=int(input("請(qǐng)輸入要插入的數(shù)據(jù)值:"))data.append([val,leng])# 插入節(jié)點(diǎn):p=headif pos== : # 加在鏈表最前面,作為首節(jié)點(diǎn)data[leng][1]=phead= # 更新頭指針else:q=data[p][1]c=0while c < pos-1 and q!=-1:p=qq=data[p][1]c+=1 # 更新指針data[p][1]=leng# 用列表形式來顯示插入后的鏈表:p=heads=[ ]while p!=-1:s.append( )p=data[p][1]print(s)參考答案1.D2.A3.D4.A5.D6.B7.B8.B9.D10.C11.C12.B13.C14.A15.B16.B17.A18.D19.D20.D21.4 2次 d[i]==d[i-1] In==mt[p][0] and st>mt[p][1] mt[q][2]22.鏈表 data[queInfo[classId-1][1]][-1]=i total=0 scoree[subjectIld][0]+=data[p][4] scoree[subjectIld][0]/score[subjectIld][1]23.16,1,15,2, IT col%2==1 或其他等價(jià)答案 t=t*10+int(s) 或其他等價(jià)答案 getmm(mw[2*i+1],n)24.8 1 range(m) 或range(0,m) 或range(0,m,1) 或range(m-1,-1,-1)或range(erase(1st)) 或range(0,erase(1st)) 或range(0,erase(1st),1) 或range(erase(1st)-1,-1,-1) k=task[k][1] w[k]=w[task[k][1]]-task[k][0] 或w[k]=w[c[i+1]]-task[k][0] 這里面可以把k換成c[i]25.2 7 1 6 2 0 leng data[leng][1]=q data[p][0] 展開更多...... 收起↑ 資源預(yù)覽 縮略圖、資源來源于二一教育資源庫(kù)