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...