本週要求挑3道題目寫設計思路、調試過程。設計思路用僞代碼描述。題目選作要求:c++
##根據題目給出條件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
##根據題目給出條件
#找倒數第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 )
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
順序表:6-3 jmu-ds- 順序表刪除重複元素(25 分)
緣由:弄錯了變量名
緣由:算法錯誤
更正:把雙重for循環改成三重for循環
更正:第十八行處應該爲L->length-1由於末尾不能有空格
單鏈表:6-3 jmu-ds-鏈表倒數第m個數(20 分)
緣由:未認真選題寫了多個函數
更正:刪去多餘函數
緣由:21行j未從零開始
更正:j=0,遍歷應從頭節點開始
有序表:7-1 兩個有序鏈表序列的合併(20 分)
緣由:弄錯了變量名
緣由:聲明函數名與代碼中函數名不匹配;
更正:改爲聲明過的函數名
本次2個題目集總分:295分
pta總分:245分
總分:2.5分
安排內容:
(1)學習時間安排:週末空閒時間,有時睡前時間;
(2)編程時間安排:晚自習後到斷網時間、偶爾沒課的時候;
(3)不懂問題是哪一種方式交流?:與同窗互相交流,進行討論,並思考和對比本身的思路與他人的不一樣、翻查手頭資料,找到本身的錯誤點,
並思考、利用網絡、
改變:
學習時間的安排太過度散,時常因各類計劃而改變。
而且我發現本身對基礎知識的掌握不夠熟練,應該先將書本知識好好掌握,再予以擴展。
還須要像擠出海綿裏的水同樣擠出時間,多學多練。
主觀認識:線性表是一種最簡單、最經常使用的數據結構。線性表中數據元素之間的關係是一對一的關係,即除了第一個和最後一個數據元素以外,其它數據元素都是首尾相接的。線性表的邏輯結構簡單,便於實現和操做。
具體小結:順序表:便於隨機存儲,缺點是不便於插入刪除等操做,由於插入刪除一個元素須要移動其後的全部元素,可是鏈表不存在這個問題,鏈表只要改變指針就行,時間複雜度小鏈表於順序表:便於插入刪除等操做,可是隨機存儲沒有順序表方便。
在碼雲的項目中,依次選擇統計-Commits歷史-設置時間段,進行搜索並截圖,以下圖所示,須要出現學號、項目提交說明。請在碼雲中將你的暱稱改成「學號-姓名」。