NODE 資料型別 p while head p head head next delete p 為什麼可以刪除 p 指標而不是頭指標?

發布 教育 2024-05-02
12個回答
  1. 匿名使用者2024-02-08

    void combine (node *head1,node *head2){node*p; &47;/臨時指標 p head1; &47;/指向第乙個鍊表的標頭節點,而 (null !) =p) && (null !=p->next)) 47;/p 不為空,p gt; next 也不是空的 47;/如果 p 為空,則表示第乙個鍊表有異常 47;/如果 p gt; next 為空,表示已到達鍊表末尾。{ p p gt; next; }47;/將第乙個鍊表的末尾指向第二個鍊表的第乙個節點,即排除標題節點 p gt; next = head2->next;暫時寫這麼多,其實要判斷head2是不是空的,自己可以改進一下,知道想法就好了,不知道怎麼問。

  2. 匿名使用者2024-02-07

    你明白:

    在資料結構描述的節點中,p->next有兩個含義,乙個是儲存在當前節點下乙個域中的後繼節點的位址值,第二個是描述當前節點的直接後繼節點。

  3. 匿名使用者2024-02-06

    包括鍊表的建立、刪除、新增和發布!!

    #include

    #include

    struct node *create();

    void print_list(struct node *head);

    struct node * insert_node(struct node *h,int x,int y);

    struct node * delete_node(struct node *h,int z);

    void shifang(struct node *head);

    struct node

    void main()

    struct node *create() 建立鍊表函式。

    尾部節點的指標欄位被指定為 null

    tail->next=null;

    return head;

    void print list(struct node *head) 輸出鍊表函式。

    printf("end.");}

    struct node * insert node(struct node *h,int x,int y).

    插入節點。 q->next=s;s->next=p;

    return(h);

    struct node * delete node(struct node *h,int z) 刪除 node 函式。

    釋放節點。 if(p->data ==z)

    return(h);

    void shifang(struct node *head) 釋放鍊表函式}

  4. 匿名使用者2024-02-05

    鍊表上有許多操作,例如建立、插入、排序、刪除和匯出。 房東到底想問什麼?

  5. 匿名使用者2024-02-04

    C語言中的鍊表是一種資料結構,一種線性儲存結構。

    與陣列一樣,鍊表也是一種將一組相同型別的資料組織在一起的資料結構,但陣列是按順序儲存的,依靠陣列的第乙個位址和元素的相對位址(下標)來實現訪問。 優點是易於訪問,而缺點是陣列是靜態的,不利於元素的動態新增和刪除。 另一方面,鍊表使用離散儲存,並依賴於節點之間的指向下乙個節點的指標進行訪問。

    它的優點和缺點與陣列相反。

    鍊表中可以有不同型別的資料。

  6. 匿名使用者2024-02-03

    記下磁頭每次指向哪個節點。

    head->next 始終指向最後乙個已倒置的節點,即新的倒置頭節點。

    因此,每次完成新節點的反轉時,都需要將其指向前乙個反轉節點,而前乙個反轉節點恰好是頭>下乙個節點指向的節點。

    例如,有鍊表 a->b->c->d->null

    開始 head->next = a, head->next->next=b

    首先讓 p=a,讓 a->next=null,即做乙個尾節點。

    然後 q 指向 b,head->next 仍然指向 a,即剛剛完成反轉的節點。

    在開始時。

    每次將 q 分配給 p,因此 p=b,q =c,b->next=head->next = a,head-next = b

    此時,head->next 指向 b,恰好是剛剛完成反轉的節點。

    稍後繼續迴圈。

  7. 匿名使用者2024-02-02

    void combine (node *head1,node *head2)

    將第乙個鍊表的末尾指向第二個鍊表的第乙個節點,即排除頭節點 p->next = head2->next;

    咱們暫且寫這麼多,其實要判斷head2是不是空的,自己可以改進一下,知道想法就好了。

    我不知道該怎麼問了。

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

    此函式的功能是將 num 值儲存在乙個新節點中,該節點附加到鍊表的尾部。

    void ins_list( pnode head, int num )

    p->data = num;儲存要插入到動態節點中的值,p->next = head->next; 將新節點連線到鍊表。

    head->next = p;

    以上兩句話有點"繞組"。使用 while() 迴圈,head->next 已經為 null

    以下兩行也可用於將新節點連線到鍊表:head->next = p;

    p->next = null;}

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

    當前沒有定義,你寫錯了嗎,沒錯,就全部傳送。

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

    直接將鍊表輸入為空會導致錯誤,所以這個就不說了。

    反向鍊表功能修改如下:

    void reverse(node *&head)head=p1;頭節點是第乙個節點}

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

    void destroy(node *&head);您的函式定義了什麼型別的引數,它如何作為引用和指標?

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

    :head=head;

    它似乎不起作用。

    刪除函式中的 head 由子函式更改,刪除函式後返回原來,修改後的程式如下:

    #include

    using namespace std;

    class node

    public:

    int date;資料域。

    node*next;指標字段。

    node *head;定義全域性指標。

    node*create() 建立鍊表函式。

    node *p1,*p2;

    p1=new node;

    cin>>p1->date;

    p2=p1;

    head=p1;

    while (p1->date!=0)

    p1=new node;

    cin>>p1->date;

    p2->next=p1;

    p2=p1;

    p2->next=null;

    delete p1;

    return head;

    void print(node*head) 列印鍊表函式。

    while (head)

    coutnext;

    void delete_member(node **phead,int number)

    int x=2;

    node *p1;

    node *p2;

    if (number==1)

    p1 = p2 =*phead);

    p1=p1->next;

    phead) =p1;

    delete p2;

    return;

    elsewhile (number>x)

    head=head->next;

    x++;p1=head->next;

    head->next=head->next->next;

    delete p1;

    return;

    void main()

    node*head=create();

    print(head);

    delete_member(&head,1);

    print(head);

    system("pause");

    結果如圖所示。

相關回答