PTA實驗做業-01

1、PTA實驗做業

本週要求挑3道題目寫設計思路、調試過程。設計思路用僞代碼描述。題目選作要求:c++

  • 順序表選擇一題(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 分)

##根據題目給出條件git

#建立順序表算法

CreateSqList(L,a,n)

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

 

for i<-0 to n by 1網絡

a[i]->L數據結構

end for//結束for循環函數

n->L的長度學習

endspa

#輸出順序表設計

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個數


定義變量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
endFind(L,m )

有序表: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 分)

緣由:弄錯了變量名

 

緣由:聲明函數名與代碼中函數名不匹配;

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


2、截圖本週題目集的PTA最後排名

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

1.順序表PTA排名

 

 

2.鏈表PTA排名

 

 

3.個人總分:

pta總分:245分

總分:2.5分

3、本週學習總結

1.談談你本週數據結構學習時間是如何安排,對本身安排滿意麼,若不滿意,打算作什麼改變?

安排內容:

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

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

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

並思考、利用網絡、

改變:

學習時間的安排太過度散,時常因各類計劃而改變。

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

還須要像擠出海綿裏的水同樣擠出時間,多學多練。

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

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

具體小結:順序表:便於隨機存儲,缺點是不便於插入刪除等操做,由於插入刪除一個元素須要移動其後的全部元素,可是鏈表不存在這個問題,鏈表只要改變指針就行,時間複雜度小鏈表於順序表:便於插入刪除等操做,可是隨機存儲沒有順序表方便。

3.代碼Git提交記錄截圖

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

相關文章
相關標籤/搜索