DS部落格作業02 線性表

2022-05-23 06:45:09 字數 3057 閱讀 9476

typedef int elemtype;

typedef struct

list;

typedef list *sqlist;

```bool listdelete(list &l, int i, elemtype& e)

i--; //將順序表邏輯序號轉化為物理序號

e = l->data[i];

for (j = i; j < l->length - 1; j++)

l->length--;

return true;

}```

typedef struct lnode //定義單鏈表結點型別

lnode,linklist;

```2.1.1 **截圖

2.1.2 pta提交列表及說明

1.部分正確:我最初的做法是將鍊錶倒置,然後找正數第m個數,然而在鍊錶倒置的程式未能很好地完成功能。

2.部分正確:修改後,依舊未能完成鍊錶的倒置。

3.答案正確:在聽完老師的講解後,發現可以正數地找第len-m個數,修改**後,答案正確。

2.2.1 **截圖

2.2.2 pta提交列表及說明

1.部分正確:剛開始寫時,我的刪除函式是會去找要刪除掉的每乙個資料並作出判斷,假設我們要刪除五個數,即使前四個數刪除完後鍊錶已經為空,依舊會去鍊錶中找第五個數,並作出判斷,輸出「x找不到!」,所以無法通過鍊錶全刪的測試點,於是我在函式裡加了乙個判斷鍊錶是否為空的語句。

2.部分正確:在函式中加入鍊錶是否為空的語句時,我把該語句寫錯了位置,放到了比較後面,於是未能通過。

3.答案正確:我把判斷鍊錶為空的語句放在了函式中較前的位置,於是通過了。

2.3.1 **截圖

2.3.2 pta提交列表及說明

1.部分正確:一開始寫的時候,並未考慮到兩個鍊錶中有重複資料的情況,只用了兩個分支進行判斷,於是沒有通過重複資料的測試點。

2.答案正確:多加了乙個判斷兩個鍊錶中的資料是否相等的分支後,答案正確。

3.1 題目及解題**

解題**:

#include using namespace std;

typedef struct lnode

lnode, * linklist;

bool isrobotbounded(linklist l);

int main()

else

delete l;

return 0;

}bool isrobotbounded(linklist l)

else if (l->instruction[i] == 'l')

else if (l->instruction[i] == 'r')

}/*一輪迴圈後回到原點*/

if (x == 0 && y == 0) return true;

/*機械人最後的朝向如果是朝左朝右或朝下就一定能在後續迴圈中回到原點*/

if (flag % 4 == 0) return false;

return true;

}

3.1.1 該題的設計思路

在無限的平面上,機械人從原點(座標為(0,0))處按照指令出發,g為朝當前機械人所朝方向前進一格,l和r只讓機械人轉向不前進。機械人不斷重複指令,判斷機械人所走路徑是否為乙個環。

3.1.2 該題的偽**

輸入指令,存在字串instruction中

for i = 0 to i = l->length do

if 指令為g then

若flag == 0 y++;

若flag == 1 x--;

若flag == 2 y--;

若flag == 3 x++;

end if

if 指令為l then

flag += 1;

flag = flag % 4;/*防止flag越界*/

end if

if 指令為r then

flag += 3;

flag = flag % 4;

end if

end for

if 機械人此時在原點 then

return true;

end if

if 機械人此時朝向上 then

return false;

else

return true;

end if

3.1.3 執行結果

3.1.4 分析該題目解題優勢及難點

DS部落格作業02 線性表

方法,還有迴圈鍊錶和雙鏈表的建立,學習了這幾種鍊錶,在今後的使用鍊錶中有了更多的選擇,同時也提高了解部分題目的效率。在順序表這一方面,主要學習的是對順序表的插入和刪除操作,鍊錶也同樣是插入和刪除,再加上擴充套件的一些操作。這兩種線性表各有 其優缺點,在使用時還需要分情況考慮。插入函式listinse...

DS部落格作業02 線性表

這階段學習學的是線性表,學習線性表的兩種儲存順序 鍊錶和順序表,體會了兩者儲存結構之間的區別,通過對順序表,單鏈表,雙鏈表,迴圈鍊錶,有序表的特點的了解,和學習它們的演算法設計方法,綜合運用線性表解決一些問題,在查資料時,也領悟一點單雙鏈表的在一些方面使用的優劣,對線性表的知識更加加深一點。void...

DS部落格作業02 線性表

1.2談談你對線性表的認識及學習體會 1 線性表是一種典型的線性結構,也是一種最常用的資料結構。線性表包括順序儲存結構和來鏈式儲存結構兩種,其中鏈式儲存結構的鍊錶正是上學期學過一點,在運用上的話,原理是懂了,但是運用起來還是 有點欠佳。剛開始做對鍊錶的一些操作方法有點不清楚,還有就是這學期涉及到時間...