資料結構習題集2 6中的在p點節點前插入s節點的語句序列

時間 2021-05-07 20:01:56

1樓:左手煙雨

你的序列肯定有問題,更像是在在p 之後插入s,但序列也是不對的。

p之後插入s:

s->next=p->next;

p->next=s;

p之前插入s,分兩種情況:

1、雙向連結串列:

s->pre = p->pre;

s->next=p;

p->pre=s;

2、單向連結串列

首先,遍歷連結串列,找到p的前一個節點,假設為q;

q->next = s;

s->next = p;

2樓:歷劫在紅塵

感覺順序不對 沒有習題集 為啥不直接把題目發上來呢

資料結構(c語言版)急求2.6答案,我自己做的好像都錯完了,看不懂,求大神指教

3樓:物理公司的

a.在p結點後插入s結點的語句序列是:

4.s-> next := p-> next; //把s的尾部

接到連結串列上,連p的下一個

1. p-> next :=s; //把s的頭部接到p的尾部

b.在p結點前插入s結點的語句序列是----------------

7.q := p ; //臨時變數q

11.p := l; //從頭開始搜素

8.while (p-> next != q ) do p := p-> next; //使p成為原p的前一個節點

4.s-> next := p-> next; //插入,跟上面一樣。

1. p-> next :=s;

c.在表首插入s結點的語句序列是----------------

5.s-> next := l; //s接原來的表頭

12.l := s; //將s設為新的表頭

d.在表尾插入s結點的語句序列是----------------

11.p := l; //從頭開始搜素

9.while (p-> next !=nil) do p := p-> next; //找到最後一個節點

1. p-> next :=s; //把s接到最後一個節點上

l為無表頭結點的單連結串列,p既不是首元結點也不是表尾結點,在p結點前插入s結點。

4樓:匿名使用者

你好,如果下面這段**去掉

q=p;

p=l;while(p->next!=q)p=p->next;

那麼s->next=p->next;

p->next=s;

就是在結點p後面插入s,這個應該好理解吧。

那麼前面的那段**是什麼作用呢?

q=p;//用臨時指標q指向結點p

p=l;然後讓指標p指向連結串列頭

while(p->next!=q)p=p->next;//查詢結點q的前驅結點,

//while迴圈退出條件是p->next == q,即p此時指向q的前驅結點(實際就是原來的節點p的前驅)

現在應該懂了吧~

希望對你有幫助,不懂可追問~

已知p結點是某雙連結串列的中間結點,則在p結點之後插入q結點時修改鏈的語句序列是:

5樓:匿名使用者

p是要刪除的結點,q是p的前一個結點q->next=p->next;//刪除的結點的後一結點的首地址賦值給刪除的結點的前一結點的nextp->next->prior=q;//刪除的結點的後一結點的prior指向刪除的結點的前一結點的首地址

雙向連結串列指標p的節點前插入一個指標q的節點操作是什麼? 操作是四個語句,那麼這四個語句的順序是固定的嗎

6樓:

想想清楚這個過程就好,雙向連結串列插入操作要保證雙向性,就是做好連結,如果懂程式的話很簡單了,看選項,畫3個方塊代表節點,畫箭頭代表雙向的連線,然後根據給出的步驟畫一畫看會不會 出錯就很明顯了

7樓:匿名使用者

lz的這個問題是一個很容易讓人迷糊的問題。我來解釋一下:

struct node *p, *q;

// 這裡指標p和q的賦值操作省去

q->prev = p->prev; // -- 1q->next = p; // -- 2p->prev->next = q; // -- 3p->prev = q; // -- 4這裡因為沒有存下p的前一個指標,所以有順序要求:

1. 語句4必須在1和3之後。(因為4中將p->prev賦新值之後,就無法得到原來p前的那個節點,所以這句留在最後)

2. 其他順序任意。

已知p結點是某雙向連結串列的中間結點,從下列提供的答案中選擇合適的語句序列

8樓:匿名使用者

答案不是唯一的,部分句子可以互換.

a.在p結點後插入s結點的語句序列是

12:p->next->priou=s; //p的下一結點的前一結點修改為s

7:s->next=p->next; //s的下一結點修改為p的下一結點,如此,12和7將p的下一結點與s連結了.

3:p->next=s; // p的下一結點修改為s

6:s->priou=p; //s的上一結點修改為p,如此,p和s連線起來了

//注:前提是p不是最後一個結點,或者連結串列本身是迴圈連結串列

b.在p結點前插入s結點的語句序列是

13:p->priou->next=s; //p的前一結點的後一結點修改為s

8:s->priou=p->priou; //s的前一結點修改為p的前一結點,如此2句,將p的前一結點和s連線了

5:s->next=p; // s的下一結點修改為p

4:p->priou=s; // p的上一結點修改為s,如此也將p和s連線

// 注:p不是表頭,或者連結串列本身是迴圈連結串列

c.刪除p結點的直接後繼結點的語句序列是

15:q=p->next; //q指向p的下一結點(即直接後繼結點)

1:p->next=p->next->next; //p的下一結點修改為q的下一結點

11:p->next->priou=p; //p的下一結點(此時為q的下一結點)的前一結點修改為p,如此將q斷開了

18:free(q); // 釋放q即可

d.刪除p結點的直接前驅結點的語句序列是

16:q=p->priou; //q指向p的直接前驅結點

2:p->priou=p->priou->priou; //p的直接前驅修改為q的直接前驅

10:p->priou->next=p; //p的直接前驅的下一結點修改為p,如此時q斷開並提出

18:free(q); // 釋放q

e.刪除p結點的語句序列是

9:p->priou->next=p->next; //p的直接前驅的下一結點修改為p的直接後繼

14:p->next->priou=p->priou; //p的直接後續的上一結點修改為p的直接前驅,如此將p提出

17:free(p); //釋放p

以上均假設所用到的結點是有效的.

資料結構的問題…… (編寫演算法實現在帶頭結點的單連結串列l中值為x的節點前插入元素為e的新節點)怎麼寫啊?

9樓:匿名_熱心網友

如果是用來學習c語言的,建議樓主別用它了,windows下面可以用visual c++6.0,linux下可以用gcc編譯器,tc的編譯環境老了點,而且用著也不舒服,vc6.0完全可以實現tc需要實現的東西,

10樓:低↓頭吻伱

linklist listinsert(linklist l,int x,elemtype e)

//找第x-1個節點

if(p==null || j>x-1)s=(linklist) malloc(sizeof(lnode)); //建立新節點,其資料為e

s->data=e;

s->next=p->next; //新節點插入在第x-1個節點的後面

p->next=s;

return l;}

11樓:匿名使用者

思路:用兩個指標p,q,用指標p去掃描這個連結串列,q緊隨p之後直到p節點的值為x為止

則在p之前插入即為在q之後插入

typedef strutc list

*node;//定義連結串列的型別

void insert_front(node head,type x)}

在一個單連結串列中的p所指結點之前插入一個s所指結點時,可執行如下操作:

12樓:墨汁諾

q=head;

while(q && q->next!dao=p)//迴圈結束時q後面正好zhi是需要找的dp或者q為空表示鏈版表中沒有權p

if (q)

q->next表示結點中存放的指標,該指標用來指向某個結點。原來的連線關係是q->next=p,意思是q中存放的指標的值是p,即q指向p。

13樓:

答案應該說不完整,這樣操作之後p指標所指結點還在s之前只是p原來指向的結點內容變了,題目要求p在s之後吧,後面應該加上p和s指標改變

14樓:

簡單來說,p前插,p和s都是指標,可以利用這一點。現將s放到p後邊的位置,然後利用臨時元素t,將p和s的data對調,這樣就將s插到p前邊了。這種方式的時間複雜度是o(1)。

比單連結串列頭開始遍歷,找到p前驅,然後插s的時間複雜度低,遍歷式演算法的複雜度是o(n)

15樓:匿名使用者

例如:t=a

a=bb=t 那麼按照這個例子擴充套件命題;

t=p->data

p->data=s->data

s->data=t

中間p->data=s->data 是連結串列的死規定,背會更好,上面s—>next=__p->next__

p—>next=s

也是連結串列的規定要切記阿。

老師講連結串列時會證明的。

資料結構練習題 線性表操作,資料結構練習題 線性表操作

雞毛蒜皮咯 連結串列實現 include include include define len sizeof struct lnode define max 1000 typedef struct lnode linklist int createsq linklist l int insertsq...

資料結構考試題,資料結構試卷

void inorder bitree root else 這就是中序遍歷的演算法 include include define maxsize 64 typedef char datatype typedef struct node bitree bitree creatree r q r s i...

資料結構問題,資料結構(java)

資料結構是計算機儲存 組織資料的方式。資料結構是指相互之間存在一種或多種特定關係的資料元素的集合。通常情況下,精心選擇的資料結構可以帶來更高的執行或者儲存效率。一 資料的邏輯結構 指反映資料元素之間的邏輯關係的資料結構,其中的邏輯關係是指資料元素之間的前後件關係,而與他們在計算機中的儲存位置無關。邏...