資料結構 為什麼不使用 p ,q 來實現向下移動指標的操作

發布 科技 2024-07-14
17個回答
  1. 匿名使用者2024-01-30

    因為 p 和 q 是動態分配的,所以 p 或 q 及其下乙個節點不會與 p 或 q 連續儲存,而是通過下乙個指標來維護它們之間的關係,因此不能使用 p++ 和 q++

    對於連續的記憶體空間(如陣列),可以這樣使用:

    例如 int a[100];

    int *p=a;

    p++ 相當於移動到 a[1],即 p 在開頭的下乙個位置......

  2. 匿名使用者2024-01-29

    P->Next 中的 P 和 Q、Q->Next 是指向空格的指標。 各個指標之間沒有邏輯關係。 每個空間之間的關係由保留在其中的下乙個空間連線起來; 所以 p++、q++ 不能表示指向下乙個空格的指標。

    它僅由 next 表示。

  3. 匿名使用者2024-01-28

    p->next 是指指向下乙個元素,但該元素不一定是它旁邊的元素,或者它可能很遠。 p->next這表示指標指向 **。 而P++只是上面最簡單的部分,也就是它旁邊的那個,塔可以理解為P->Next的乙個特例。

  4. 匿名使用者2024-01-27

    p++ 是遞增儲存在 p 中的位址。

    p = p->next 是結構中 p 等於 p 的下乙個成員的位址。

    p++ 通常用於連續空間,p = p->next 用於非連續鍊表。

  5. 匿名使用者2024-01-26

    同學,你能保證這些位址都是連續的嗎?

  6. 匿名使用者2024-01-25

    First++p:在執行迴圈的內部語句之前,指標 p 自遞增一次,指向第二個元素。

  7. 匿名使用者2024-01-24

    ++p 和 p++ 在這裡是一樣的。

    p-1)=*p;這意味著將資料從後面複製到前面。

    例如,原始 elem= 假設最多可以容納 4 個資料,當 i=2 時,首次執行 *(p-1)=*p; 結果是 elem[2]=elem[3];

    結果是elem=,但同時由於減去1,長度變為3,有效資料為1、2、4,刪除第i(第2)個資料的操作完成。

  8. 匿名使用者2024-01-23

    Front++ 和 Rear ++ 效果分別相同,沒錯。 但這不是 pre-++ post-++ 的問題,似乎你不明白如何執行 for() 中的 3 個表示式 - 第乙個表示式(第乙個; 進入for迴圈時只執行一次,迴圈完成後才會執行; 第二個表示式(兩個; 數字之間的乙個)必須首先執行每個週期;第三個表示式(第二個; After each loop) 在每個迴圈執行 “body” 後執行。因此,在執行 “body” * p-1)=*p 之前,上述語句中的 p 僅遞增一次而不是兩次。

  9. 匿名使用者2024-01-22

    First++p:在執行迴圈的內部語句之前,指標 p 自遞增一次,指向第二個元素。 p<=q:

    如果 p 的位址大於 q 的位址,則迴圈跳出。*(p-1)=*p:執行迴圈的內部語句,當前指標 p 指向該元素前乙個元素的值,複製為 q 位址的值。

  10. 匿名使用者2024-01-21

    然後 a->next=a->next->next; (刪除 B 節點,這裡我想問一下,這裡是否有必要新增乙個 free(b) 來刪除 B 節點? )

    首先,a->next =a->next->next 意味著只是將 a 的指標指向 c,不是刪除 b,b 仍然存在於記憶體中,而是失去與 a c 的後繼關係,使用 free 釋放 b 節點。

    而隨後的 p=p->next 並沒有刪除節點,而是讓指標 p 向後移動。

  11. 匿名使用者2024-01-20

    我也在學習資料結構...... 我不認為這種說法真的可以逆轉......

  12. 匿名使用者2024-01-19

    試想一下這個過程,雙頭鍊表插入操作保證雙向性,就是做好鏈結,如果你了解程式的話,很簡單,看看選項,畫3個方塊表示節點,畫箭頭代表雙向連線,然後按照給出的步驟畫一張圖,看會不會有明顯的錯誤。

  13. 匿名使用者2024-01-18

    在順序儲存結構(實際上是乙個陣列)中,線性表中儲存的資料(陣列)的基址(起始位址)為表的長度(資料元素數),q與指標計算後陣列的情況相同,如上公式: 整數 a[10],*p=a;p 指向第乙個元素。

    p=a+1;指向第二個元素。

    則:p=a+10-1; 指向最後乙個陣列元素,即 a[9]。

  14. 匿名使用者2024-01-17

    函式中沒有 q->next=p; 在本例中,q 是插入前的尾節點。 然後,q 的下乙個(新插入的節點)將由 q 指向節點中的下乙個字段。

    插入單向鍊表只需要對 s->next 和 p->next 的指標稍作更改。

    s->next = p->next;

    p->next = s;

    單鏈表第i個資料插入節點的演算法思路如下:

    1. 宣告乙個指向鍊表第乙個節點的指標 p,並從 1 初始化 j;

    2.當j

    3.如果鍊表末尾的p為空,則表示第i個元素不存在;

    4.否則搜尋成功,系統中會生成乙個空節點S;

    5. 將資料元素 E 分配給 s->data;

    6. 插入單向鍊表的標準語句 s->next = p->next; p->next = s;

    7.退貨成功。

  15. 匿名使用者2024-01-16

    堆疊是自定義的,具體取決於堆疊的定義方式,如果堆疊頂部指標指向下乙個可用堆疊空間,則需要 *(; 如果堆疊指標的頂部指向當前可能的空間,請使用 *(

  16. 匿名使用者2024-01-15

    是一樣的,命名與它無關,q->next =p; 作業與指標指向相關,只是為了更好地理解。

  17. 匿名使用者2024-01-14

    指標的宣告。

    指向鍵入 *p;

    這表明這是乙個指標,當宣告時,變數 p 不是作為指標本身呼叫的,而是作為指標的目標呼叫的!

    例如:P->Next

    這不是指標 p 的下乙個,而是指標 p 指向的目標中的下乙個結構作為自定義資料結構,建立後,系統只能返回整個結構的第乙個位址,所以只能用乙個指標連線,結構中的指標變數命名為 next 只是乙個國際慣例, 即使你把它改成*n,也是一樣的,但是當你以後使用它時:

    p->next 可以改為 p->n,常用的指標賦值有兩種:

    1. 獲取目標的位址並將其分配給指標。

    p = & target & 是位址字元。

    2.將另乙個指標指向的目標位址分配給指標p = q;

相關回答
15個回答2024-07-14

在實踐中,許多資料結構是現成的。 比如資料庫查詢,幾句話就夠了,如何實現查詢已經是資料庫軟體開發人員搞定的。 如果你開發一般的應用軟體或資料庫資料庫應用,你確實用到很少的資料結構,甚至感覺不到它的存在,但如果你做人工智慧、作業系統、開發資料庫系統之類的事情,恐怕你對資料結構的了解還不夠。

8個回答2024-07-14

一方面是難學的,另一方面是有現成的。 大多數演算法大師都參加過ACM大賽,專門針對資料結構和演算法的比拼,希望越來越多的人參與進來。

13個回答2024-07-14

所謂遍歷,是指樹中的每個節點沿著某條搜尋路線訪問一次,並且只訪問一次。 接入節點的作用取決於具體的應用程式問題。 遍歷是二叉樹上最重要的操作之一,也是二叉樹上其他操作的基礎。 >>>More

6個回答2024-07-14

資料結構。 它是計算機儲存和組織資料的方式。 >>>More

3個回答2024-07-14

如果僅使用視訊,則無法實現準確的量化。 而“鷹眼”技術已經將其數位化。 讓比賽的結果更加沒有爭議。 >>>More