資料結構 線性表P35 2t

2021-10-13 07:35:38 字數 1121 閱讀 1391

已知遞增有序的單鏈表a、b (a、b中元素個數分別為m、n,且a、b都帶有頭結點)分別儲存了乙個集合,請設計演算法,以求出兩個集合a和b的差集a-b (僅由在a**現而不在b**現的元素所構成的集合)。將差集儲存在單鏈表a中,並保持元素的遞增有序性。

分析:只需從a中刪去a與b中共有的元素即可。由於兩個鍊錶中的元素是遞增有序的,因此可以這麼做:設定兩個指標p、q開始時分別指向a和b的開始結點。迴圈進行以下判斷和操作:如果p所指結點的值小於q所指結點的值,則p後移一位;如果q所指結點的值小於p所指結點的值,則q後移一位:如果兩者所指結點的值相同,則刪除p所指結點。最後,p與q任一指標為null時演算法結束。

實現如下:

#include

using

namespace std;

typedef

struct lnode

lnode;

void

different

(lnode* a,lnode* b)

else

if(b-

>data > a-

>data)

else}}

void

createlistr

(lnode *

&l,int a,

int n)

//尾插法

r->next =

null

; l = c;

}int

main()

;int b[5]

=;lnode *a =

(lnode*

)malloc

(sizeof

(lnode));

lnode *b =

(lnode*

)malloc

(sizeof

(lnode));

createlistr

(a, a,6)

;createlistr

(b, b,5)

;different

(a, b)

;for

(a=a-

>next; a !=

null

; a = a-

>next)

}

資料結構(線性表)

1.試寫一演算法,在無頭結點的動態單鏈表上實現線性表操作insert l,i,b 並和在帶頭結點的動態單鏈表上實現相同操作的演算法進行比較。status insert linklist l,int i,int b 在無頭結點鍊錶l的第 i個元素之前插入元素 belse insert 2.已知線性表中...

資料結構 線性表

參考 一 線性表 順序表 單鏈表 迴圈鍊錶 雙鏈表 順序表 1.表的初始化 void initlist seqlist l 2.求表長 int listlength seqlist l 3.取表中第i個結點 datatype getnode l,i 4.查詢值為x的結點 5.插入 具體演算法描述 v...

資料結構 線性表

線性表是最基礎的一種資料結構,這樣的資料物件包含的資料元素具有一對一的前驅後繼關係。按其邏輯儲存方式的不同可分為兩類線性表 順序表和鏈式表。其中鏈式表又可分為線性鍊錶 迴圈鍊錶和雙向鍊錶。下面分別介紹下這幾種線性表的資料結構 1.順序表 typedef struct sqlist 插入演算法 i到n...