資料結構單連結串列插入單連結串列中q next p next和p next q

2021-03-30 15:30:58 字數 3754 閱讀 5655

1樓:

這兩句是把q插入單連結串列的c語言描述語句。我們暫且假設p的後繼

為r,第一句的意思是把p的後繼,也就是r,賦給q的後繼,此時r既是p的後繼,也是q的後繼,也就是說q已經指向r了,此時再讓p的後繼指標指向q(也就是q賦給p的後繼)即可(這也正是第二句的意思),這樣就完成了q的插入。

你可以將「->」讀作「的」,那麼這兩句就可以讀作:把p的後繼賦給q的後繼,q賦給p的後繼。這樣讀就很容易理解了。

2樓:匿名使用者

q->next=p->next是指 p的next指標指向的地址賦值給 q的next指標.

p->next = q 是指 q的地址賦值給p的next指標.在q->next在右邊就不對了,p->next的地址覆蓋了q,q本來指向的地址就找不到了。

q是一個指標變數,你可以理解為q的記憶體地址,q->next 指向q的下一個節點記憶體地址。

資料結構中,單連結串列p=l與p=l->next有什麼區別?p->next=s與p->next=s-> 10

3樓:熱情的

l在資料結構中一般是作為連結串列頭節點的指標,p=l,將p指標也指向頭節點。

l->next有兩層含義,可以表示l的後繼節點指標,又可表示l的指標域,(補充:連結串列每個節點分為資料域和指標域,(單連結串列的指標域只有後繼指標域,雙連結串列的指標域分為前趨指標域和後繼指標域))。第一,當它在等號右邊時(即x = l->next形式)一般是指將x指標指向頭節點l的後一個節點也就是連結串列的第一個資料節點;第二,當它在等號左邊的時候(即l->next = x),表示將x的值當做地址,寫入到l的後繼指標域l->next當中,相當於頭節點l的後面連結一個資料節點。

基礎概念理解後,對於p->next=s與p->next=s->next就好理解了,p->next=s:將指標變數s的值寫入p的後繼指標域,相當於p資料節點後又連結一個指標s指向資料節點,p->next=s->next:將s節點後接的節點的地址寫入到p節點的後繼指標域,相當於p節點插入到原先s節點與s的後接節點中間。

中間邏輯建議畫圖理一遍,理順了以後再見到就能很快看明白的。

4樓:匿名使用者

p和l都是資料結構物件嗎 p=l是把資料結構l的每個變數的值賦給p 另個是把l裡的next變數的值賦給p 第二種好像錯的吧。第二個第一種是把s的首地址賦給p的next變數 第二種是把s的next值賦給p的next

5樓:雨後小故事

l->next是l後的下一個資料

資料結構 連結串列 p是指標能否把p->next等價為指標?比如free(p->next);

6樓:匿名使用者

按實現來說:

1.p->next就是定義為指標;

2.p->next的實現目的就是能夠指向另一個節點;

3.使用free(p->next)需要注意的是後續的連結串列是否都釋放了,沒有就會造成記憶體洩露,都釋放了,也要將p->next置為空。

綜上,可以等價,但是free要非常小心注意就行。

資料結構單連結串列的 p->next 跟p->data分別表示什麼意思

7樓:匿名使用者

連結串列的節點包含兩個要素:

資料域:要儲存的資料,可以是多資料,當然您說的p->data是一個資料

資料結構中單連結串列的建立,插入和刪除。

8樓:扈懷煒

#include "stdio.h"

#include "stdlib.h"

#define ok 1

#define error 0

typedef int elemtype;

typedef int status;

typedef struct lnode lnode,*linklist;

//以下是建立單連結串列

printf("a list has been created successfully!\n");

}//以下是輸出單連結串列

void outputlist_l(linklist l)

printf("the list is:\n");

while (p )

printf("\n");

}//在第i個元素之前插入一個元素

status listinsert_l(linklist l, int i, elemtype e)

if(p==null)

if(i==j)

//請將該演算法補充完整

}// 刪除第 i 個元素

if(p==null)

if(i==j)

//請將該演算法補充完整

}int main()

else printf("the inserting position is error!please do again!\n");

}else if (choice==2)

else printf("the deleting position is error!please do again!\n");

}else if (choice==3)

else if(choice!=0)

printf("choice error\n");

}return 0;}

在資料結構中建立一個單連結串列,要求單連結串列的元素按升序排列,輸出單連結串列,然後插入元素x保持單連結串列的升... 30

9樓:匿名使用者

給你函式自己也得練習寫啊!

//連結串列指標實現

#include

#include//需要malloc.h

struct node

;struct node head;

void init()//初始化

struct node *ins(struct node *p,int i) //在p位置後插入i

void del(struct node *p) //刪除p位置(p!=head)

排序部分可以使用冒泡或者快排,選排

c語言資料結構,把一個單連結串列la中的奇數項和偶數項分開,分別放在兩個單連結串列lb,lc中

10樓:

//輸入時以-1結束

#include

#include

struct node

;struct node * create()else

}p->next = null;

return head;

}void print_link(struct node * head)

printf("\n");

}struct node ** devide_link(struct node * head)

else

}else //奇數

else

}head = head->next;

}if(head_odd_tmp)

head_odd_tmp->next = null;

if(head_even_tmp)

head_even_tmp->next = null;

return head_result;

}int main()

資料結構實現兩個連結串列的合併,資料結構題目 實現兩個連結串列的合併

include include include int main int f a.assign e,e sizeof e sizeof e 0 b.assign f,f sizeof f sizeof f 0 a.sort b.sort merge a.begin a.end b.begin b.e...

資料結構建立連結串列中的頭插法和尾插法對比有什麼優缺點

頭插法是新增節點總是插在頭部,以帶頭結點連結串列為例,連結串列頭指標內是head,新增節點p 那麼容p next head next head next p 如果是不帶頭結點的連結串列那麼對應是 p next head head p 而尾插法是將新增節點插在連結串列尾部,for t head t n...

C 單連結串列輸出程式訪問衝突求指正

1全部問題很簡單 initlist linklist l 這個函式中,for迴圈建立節點時 linklist s linklist malloc sizeof linklist s data i 6 r next s 少了把s next null 這行 因為s是一個新的節點,下個節點忘了置為null...