PTA實驗作業-01


一、PTA實驗作業

本周要求挑3道題目寫設計思路、調試過程。設計思路用偽代碼描述。題目選做要求:

  • 順序表選擇一題(6-2,6-3,7-1選一題),代碼必須用順序結構抽象數據類型封裝
  • 單鏈表選擇一題(6-1不能選)
  • 有序表選擇一題

 


1.題目1:題目名稱

順序表:6-3 jmu-ds- 順序表刪除重復元素(25 分)

單鏈表:6-3 jmu-ds-鏈表倒數第m個數(20 分)

有序表:7-1 兩個有序鏈表序列的合並(20 分)

2. 設計思路(偽代碼或流程圖)

 

順序表:6-3 jmu-ds- 順序表刪除重復元素(25 分)

##根據題目給出條件

#創建順序表

 CreateSqList(L,a,n)

定義變量i用以計數//整形變量

 

for i<-0 to n by 1

a[i]->L

end for//結束for循環

n->L的長度

end

#輸出順序表

DispSqList(L)

定義變量i用以計數//整形變量

for i<-0 to L->length by 1

輸出L->data[i]

end for//結束for循環

if i<L->length-1

則 輸出’空格”

end

#刪除重復元素

DelSameNode(L)

定義變量i,j,k用以計數//整形變量

for i<-0 to L->length by 1  //for1

for j<-i+1 to L->length by 1  //for2

if L->data[i]等於L->data[j]

 則  for k<-j to L->length-1 by 1  //for3

 L->data[k]<-L->data[k+1]

 end for//結束for3循環

 L->length--

end if

end for//結束for2

end for//結束for1

if L->length等於2 //if1

則 if L->data[0]等於L->data[1]//if2

 L->length--

end if //結束if2

end if //結束if1

end

單鏈表:6-3 jmu-ds-鏈表倒數第m個數(20 分)

##根據題目給出條件

#找倒數第m個數

Find(L,m )

定義變量j和i用以計數//整形變量
定義指針*q和*s
q<-L->next
s<-L
i<-0
while q不等於NULL
do  q<-q->next
i++
end //結束while
if i<m或m<=0
輸入不合法返回 -1
end if
for j<-0 to i-m+1 by 1
s<- s->next
end for
返回 s->data
end

有序表:7-1 兩個有序鏈表序列的合並(20 分)

type Linklist

Dim data As INTEGER//聲明data為整形變量

設置指針 *next //指向后繼節點

end Linklist

Linklist* creatlist(*L)//聲明創建鏈表的函數

#主函數

定義指針*q,*p,*t,*x,*s1,*s2,*s3

為s1,s2,s3,q分配存儲空間

置s1,s2,s3,q指針域為NULL

p<-s1;
t<-s2;
x<-s3;
s1<-creatlist(p)
s2<-creatlist(t)

p<-s1->next
t<-s2->next

while  p和t

do

if p->data<t->data  //1
x->next<-p
p<-p->next 
else 

if p->data>t->data //2

x->next<-t;
t<-t->next;
else 

x->next <- p;
p <- p->next
x <- x->next
x->next <- t
t <- t->next //t
指向下一個節點
end if //2
end if //1
x <- x->next //
x指向下一個節點
end while

if p等於NULL並且t不等於NULL
x->next <- t;

if p不等於NULL並且t等於NULL
x->next<-p;
s3<-s3->next;
if s3不等於NULL
輸出s3->data
s3=<-s3->next;
while s3不等於NULL
輸出s3->data

end while
s3<-s3->next;

else

輸出 NULL
end

#創建鏈表函數creatlist( *L)

定義指針*s,*r;
給r分配存儲空間
r->next<-NULL;
s<-L;
輸入r->data
while  r->data不等於-1
s->next<-r;
s<-s->next;
給r分配存儲空間
r->next<-NULL
輸入r->data
end while
 返回鏈表L

end

 

3.代碼截圖

順序表:6-3 jmu-ds- 順序表刪除重復元素

 

 

 

 

 

單鏈表:6-3 jmu-ds-鏈表倒數第m個數

 

有序表:7-1 兩個有序鏈表序列的合並

 

4.PTA提交列表說明。

 

順序表:6-3 jmu-ds- 順序表刪除重復元素(25 分)

原因:弄錯了變量名

原因:算法錯誤

更正:把雙重for循環改為三重for循環

更正:第十八行處應該為L->length-1因為末尾不能有空格

單鏈表:6-3 jmu-ds-鏈表倒數第m個數(20 分)

原因:未認真選題寫了多個函數

更正:刪去多余函數

原因:21行j未從零開始

更正:j=0,遍歷應從頭節點開始

有序表:7-1 兩個有序鏈表序列的合並(20 分)

原因:弄錯了變量名

 

原因:聲明函數名與代碼中函數名不匹配;

更正:改成聲明過的函數名


二、截圖本周題目集的PTA最后排名

本次2個題目集總分:295分

1.順序表PTA排名

 

 

2.鏈表PTA排名

 

 

3.我的總分:

pta總分:245分

總分:2.5分

三、本周學習總結

1.談談你本周數據結構學習時間是如何安排,對自己安排滿意么,若不滿意,打算做什么改變?

安排內容:

(1)學習時間安排:周末空閑時間,有時睡前時間;

(2)編程時間安排:晚自習后到斷網時間、偶爾沒課的時候;

(3)不懂問題是哪種方式交流?:與同學互相交流,進行討論,並思考和對比自己的思路與他人的不同、翻查手頭資料,找到自己的錯誤點,

並思考、利用網絡、

改變:

學習時間的安排太過分散,時常因各種計划而改變。

並且我發現自己對基礎知識的掌握不夠熟練,應該先將書本知識好好掌握,再予以擴展。

還需要像擠出海綿里的水一樣擠出時間,多學多練。

2.談談你對線性表的認識?

主觀認識:線性表是一種最簡單、最常用的數據結構。線性表中數據元素之間的關系是一對一的關系,即除了第一個和最后一個數據元素之外,其它數據元素都是首尾相接的。線性表的邏輯結構簡單,便於實現和操作。

具體小結:順序表:便於隨機存儲,缺點是不便於插入刪除等操作,因為插入刪除一個元素需要移動其后的所有元素,但是鏈表不存在這個問題,鏈表只要改變指針就行,時間復雜度小鏈表於順序表:便於插入刪除等操作,但是隨機存儲沒有順序表方便。

3.代碼Git提交記錄截圖

在碼雲的項目中,依次選擇統計-Commits歷史-設置時間段,進行搜索並截圖,如下圖所示,需要出現學號、項目提交說明。請在碼雲中將你的昵稱改為“學號-姓名”。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM