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