資料結構(線性表)

2021-04-12 21:25:04 字數 1250 閱讀 4362

1.  試寫一演算法,在無頭結點的動態單鏈表上實現線性表操作insert(l,i,b),並和在帶頭結點的動態單鏈表上實現相同操作的演算法進行比較。

status insert(linklist &l,int i,int b)//

在無頭結點鍊錶l的第

i個元素之前插入元素

belse

}//insert

2. 已知線性表中的元素以值遞增有序排列,並以單鏈表作儲存結構。試寫一高效的演算法,刪除表中所有值大於mink且小於maxk的元素(若表中存在這樣的元素)

status delete_between(linklist &l,int mink,int maxk)//

刪除元素遞增排列的鍊錶

l中值大於

mink

且小於maxk

的所有元素

}//delete_between

3.  試寫一演算法,實現順序表的就地逆置,即利用原表的儲存空間,將線性表(a1,a2,a3,.........,an)逆置為(an,an-1,........a1).

void reverse(sqlist &a)//

順序表的就地逆置

//reverse

4.  試寫一演算法,對單鏈表實現就地逆置。

void linklist_reverse(linklist &l)//

鍊錶的就地逆置

;為簡化演算法

,假設表長大於

2q->next=p;s->next=q;l->next=s;

}//linklist_reverse分析:

本演算法的思想是

,逐個地把

l的當前元素

q插入新的鍊錶頭部

,p為新表表頭

. 5.  已知由乙個線性鍊錶表示的線性表中含有:類字元的資料元素(如:字母字元、數字字元和其他字元),試編寫演算法將該線性鍊錶分割為三個迴圈鍊錶,其中每個迴圈鍊錶表示的線性表中均只含一類字元。

status linklist_divide(linklist &l,cilist &a,cilist &b,cilist &c)//

把單鏈表

l的元素按型別分為三個迴圈鍊錶

.cilist

為帶頭結點的單迴圈鍊錶型別

.else if(isdigit(s->data))

else

}//while

p->next=a;q->next=b;r->next=c; //

完成迴圈鍊錶

}//linklist_divide

資料結構 線性表

參考 一 線性表 順序表 單鏈表 迴圈鍊錶 雙鏈表 順序表 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...

資料結構 線性表

include using namespace std define listsize 100 表空間的大小可根據實際需要而定,這裡假設為100 typedef int datatype datatype的型別可根據實際情況而定,這裡假設為int typedef struct seqlist 初始化...