一、pta題目集
4-1、刪除單鏈表偶數節點
,碰到問題如下:
1)剛開始時候忘記了判斷頭節點資料 導致答案出錯
2)函式題只能對函式進行操作,有同學一開始將main函式中做了修改,編譯出錯。這是題目已定的部分,不能更改。
3)在判斷節點是否為偶數時,若節點不為偶數則跳過,執行程式結果與預期不符
解決辦法:與小組討論後得知,不能直接用a=a->next這一步代替跳過節點,需要用建立的另乙個指標來代替。
4-3、鍊錶逆置
1)重創乙個鍊錶,進行頭插法時,忘記保留頭節點位址。
解決方法:定義了l用來保留頭節點位址。
4-4.求鍊錶的倒數第m個元素
1)一開始的思路是用頭插法進行重制乙個鍊錶,那樣第m個元素就是原先鍊錶倒數第m個元素,第一次編譯錯誤,原因是題目要求不改變原鍊錶,審題不認真。解決方法:對原先鍊錶進行遍歷判斷是否為偶數,是的話刪除該節點。
5-4一元多項式的乘法與加法運算
1)一元多項式的乘法與加法運算這題,把**打好後編譯可以通過,但在使用時會出現錯誤,用除錯來找錯誤時結果又是正確的。
二、鍊錶學習總結
1、張藝琳:
1)對題4-1:建表分配記憶體就不說了 然後刪除偶數結點就是根據結點資料求2的餘數,若餘數為0,則此節點的next覆蓋,若餘數不為0,繼續向後遍歷。
2)題4-2:思路是用兩個指標,第乙個指標按順序將資料存入陣列,第二個指標也重頭開始往後掃,於是陣列裡面的資料就倒過來存在了鍊錶中。
2、江炳煌:
1)建立單鏈表等函式要注意返回頭指標,建立頭節點注意賦予空間,且next域置為null
2)對於刪除偶數節點的題目,遍歷鍊錶,當某節點資料不為偶數,要注意將指標域移動到下一節點,否則會導致錯誤。
3、鄭玉波:
1).設定空白頭節點後,在使用時要注意呼叫的是頭節點指向的下乙個節點的值,否則會導致賦值的錯誤。
3).鍊錶倒置
方法1 :新建乙個鍊錶,使用頭插法把值插入新錶中。
方法2:建立乙個空鍊錶,把原煉表頭節點指向null再把記錄下的下乙個節點指向頭節點,後面採用同樣方法(下乙個指向前乙個),最後讓新建空鍊錶指向原鍊錶最後乙個節點位置。
4、吳延彬
1)鍊錶是乙個比較難的結構體,剛開始時幾乎什麼都不懂,即使一直在看書、查資料也難以全部理解,需要與同學進行交流。鍊錶與之前所學的普通結構體有所不同,要注意的地方有很多,比如有了各種節點、不能只用乙個指標來指向各個資料、需要用null來進行定義等等。想要學好鍊錶,需要花費大量的時間,並且要與同學交流討論,自己乙個人做的效率很低。
三、小組未解決問題
1、鍊錶倒置
struct listnode *reverse( struct listnode *head ) *list;
void structure (list &l);
list add(list l1,list l2);
list multiplication (list l1,list l2);
void print(list l3,list l4);
void simplification(list &l);
int main()
list l1,l2,l3,l4,p,s,p1,p2;
structure (l1);
structure (l2);
l4=multiplication(l1,l2);
p=l1;
p1=l2;
l3=(list)malloc(sizeof(list));
p2=l3;
while(p1->next!=null)
s=(list)malloc(sizeof(list));
s->coefficient=p1->next->coefficient;
s->index=p1->next->index;
p2->next=s;
p2=s;
p1=p1->next;
while(p->next!=null)
s=(list)malloc(sizeof(list));
s->coefficient=p->next->coefficient;
s->index=p->next->index;
p2->next=s;
p2=s;
p=p->next;
p2->next=null;
simplification(l3);
print(l3,l4);
return 0;
void structure (list &l)
int i,j;
list p,s;
l=(list)malloc(sizeof(list));
p=l;
scanf("%d",&i);
for(j=0;js=(list)malloc(sizeof(list));
scanf("%d%d",&s->coefficient,&s->index);
p->next=s;
p=s;
p->next=null;
void simplification(list &l)
list p,s;
int i;
p=l;
while(p->next!=null)
i=p->next->index;
s=p->next;
while(s!=null)
if(s->next==null)
break;
if(s->next->index==i)
p->next->coefficient=p->next->coefficient+s->next->coefficient;
s->next=s->next->next;
s=s->next;
else s=s->next;
p=p->next;
list add(list l1,list l2)
list l3,p,s,p1,p2;
p=l1;
p1=l2;
l3=(list)malloc(sizeof(list));
p2=l3;
while(p1->next!=null)
s=(list)malloc(sizeof(list));
s->coefficient=p1->next->coefficient;
s->index=p1->next->index;
p2->next=s;
p2=s;
p1=p1->next;
while(p->next!=null)
s=(list)malloc(sizeof(list));
s->coefficient=p->next->coefficient;
s->index=p->next->index;
p2->next=s;
p2=s;
p=p->next;
p2->next=null;
simplification(l3);
return l3;
list multiplication (list l1,list l2)
list p1,p2,s,l3,p3;
p1=l1;
p2=l2;
l3=(list)malloc(sizeof(list));
p3=l3;
while(p1->next!=null)
p2=l2;
while(p2->next!=null)
s=(list)malloc(sizeof(list));
s->coefficient=p2->next->coefficient*p1->next->coefficient;
s->index=p2->next->index+p1->next->index;
p3->next=s;
p3=s;
p2=p2->next;
p1=p1->next;
p3->next=null;
simplification(l3);
return l3;
void print(list l3,list l4)
list p1,p2;
p1=l3;
p2=l4;
while(p2!=null)
if(p2->next->next==null)
break;
if(p2->next!=null)
printf("%d %d ",p2->next->coefficient,p2->next->index);
p2=p2->next;
printf("%d %d\n",p2->next->coefficient,p2->next->index);
while(p1->next->next!=null)
if(p1->next->next==null)
break;
if(p1->next!=null)
printf("%d %d ",p1->next->coefficient,p1->next->index);
p1=p1->next;
printf("%d %d\n",p1->next->coefficient,p1->next->index);
藍精靈小組第二週小組討論學習總結
小組成員 20202410 聞寅瑩 20202412 姜和言 20202417 韓夢馨 20202430 王凱欣 經過個人自主學習和小組討論,我們對 電腦科學概論 第 四 五章內容有了大致的了解和更進一步的認識。經討論,我們組討論問題如下 1 如何用一種門表示其他的門?2 分不清rom和ram ra...
第二次小組討論
地點 課堂 在課堂上,小組成員略微討論了專案的資料流圖,但最終還是決定採用物件導向法進行建模。同時,我們確定需求規格說明書的分工工作,其中引言和任務概述由龔美珍完成,功能需求由肖小萌和潘妍共同完成,資料需求由龐鄧承銘完成,效能需求和其他需求由張嘉恆完成,執行需求由迪力完成。小組成員在完成自己的分工後...
第二小組 第十一周學習週報
一,學習如本週學習情況 1 何用l298n電機驅動模組與arduino實現pwm調速。2 學習小車的搭建。3 將程式燒寫到板子上。4 對紅外感測器的了解和使用 5 二,學習筆記 1 in1 4四個端子,是通過輸出高低電平來控制motora和motorb正反轉的,in1 2是一對控制motora,3 ...