資料結構入門 順序表的基本操作

2021-10-07 18:25:25 字數 4696 閱讀 6846

一、實驗目的

通過該實驗,深入理解順序表的邏輯結構、物理結構等概念,掌握順序表基本操作的程式設計實現,注意順序表插入、刪除等操作過程中資料元素的移動現象,培養學生編寫程式時,要考慮程式的強壯性,熟練掌握通過函式引數返回函式結果的辦法。

二、實驗內容

程式設計實現順序表的基本操作,最好用選單形式對應各個操作,使其編成乙個完整的小軟體。

三、主要源**

#include

#include

using

namespace std;

#define list_insize 100

#define listincrase 10

typedef

struct

_list;

void

xianshi

(int i,string text)

;//介面格式化輸出函式

intcreatlist

(_list &l)

;//初始化線性表

intdestroylist

(_list &l)

;//銷毀線性表

intclearlist

(_list &l)

;//清空線性表

intpanduan

(_list &l)

;//判斷線性表是否為空

intget_list_length

(_list &l)

;//獲取線性表的長度

intget_list_select_value

(_list &l,

int q)

;//獲取指定位置的值

intget_list_select_posization

(_list &l,

int q)

;//獲取輸入值的位置

intget_list_top

(_list &l,

int q)

;//前驅

intget_list_next

(_list &l,

int q)

;//後繼

intinsert_list_select_posization

(_list &l,

int i,

int q)

;//在指定位置插入

intdelete_lis_select_value

(_list &l,

int i)

;//刪除指定位置元素

intview_list

(_list &l)

;//讀取線性表的所有值

inthebinglist

(_list &l1,_list &l2,_list &l3)

;//合併兩個任意的非遞減順序的線性表

intmain()

else

else

break;}

case2:

else

}else

break;}

case3:

else

}else

break;}

case4:

else

else}}

else

break;}

case5:

else

}else

break;}

case6:

else

}else

break;}

case7:

else

}else

break;}

case8:

else

}else

break;}

case9:

else

}else

break;}

case10:

else

}while

(true);

}}else

break;}

case11:

else

}else

break;}

case12:

else

}else

break;}

case13:

else

else}}

else

break;}

default:}

} cout<<

" 退出輸入乙個負數"

<

cout<<

"請輸入操作**:"

<

}while

(true);

return0;

}void

xianshi

(int i,string text)

if(i>=10)

}int

creatlist

(_list &l)

l.len=0;

l.lstsize=list_insize;

return1;

}int

destroylist

(_list &l)

intclearlist

(_list &l)

intpanduan

(_list &l)

else

}int

get_list_length

(_list &l)

intget_list_select_value

(_list &l,

int q)

else

cout<<

"要查詢的元素為:"

<<

*pt<

}return1;

}int

get_list_select_posization

(_list &l,

int q)

pt++;}

if(_find==

false

)return1;

}int

get_list_top

(_list &l,

int q)

else

while

(i==q-1)

; cout<<

"前驅為:"

<

--pt)

<

}return1;

}int

get_list_next

(_list &l,

int q)

else

while

(i==q-1)

; cout<<

"後繼為:"

<<

*(pt)

<

}return1;

}int

insert_list_select_posization

(_list &l,

int i,

int q)

if(l.len>=l.lstsize)

l.p=newbase;

l.lstsize+

=listincrase;

}int

*pt=

(l.p+i-1)

//int

*ptt=

(l.p+l.len-1)

;for

(;ptt>=pt;ptt--

)*pt=q;

l.len++

;return1;

return1;

}int

delete_lis_select_value

(_list &l,

int i)

int*pt=

(l.p+i-1)

;int q=

*pt;

int p=

*pt+1;

element_type.left=pt--

;int

*ptt=l.p+l.len-1;

for(

;pt<=ptt;pt++

) l.len--

;return q;

}int

view_list

(_list &l)

cout<

return1;

}int

hebinglist

(_list &l1,_list &l2,_list &l3)

else}}

}}while

(i<=l1.len&&j<=l2.len)if(

*pt1>

*pt2)}if

(i>l1.len)

return1;

}if(j>l1.len)

return1;

}return1;

}

四、參考介面

注:銷毀是指free(l.elem); l.elem=null; l.length=0; l.listsize=0; return true。清空是指:l.length=0 ;return true。

注意:求前驅是指,輸入乙個元素值(而不是位置),求該元素在順序表中的直接前驅元素值。求後繼是指:輸入乙個元素值(而不是位置),求該元素在順序表中的直接後繼元素值。

資料結構 順序表的基本操作

計算機中線性表的存放結構主要有兩種 順序儲存結構和鏈式儲存結構。採用前者存放方式的線性表是順序表,採用後者的就是我們平時所說的鍊錶 線性鍊錶 這裡先對順序表的一些基本操作進行歸納和總結,鍊錶的將在後面的文章中歸納總結。順序表的表示,一般都是借助一維陣列。c 語言定義其結構如下 const int m...

資料結構 順序表的基本操作

main include include define true 1 define error 0 define ok 1 define false 0 define overflow 2 typedef int status typedef int elemtype define list ini...

資料結構 順序表的基本操作

老規矩先來看一下題目 本題要求實現順序表元素的增 刪 查詢以及順序表輸出共4個基本操作函式。l是乙個順序表,函式status listinsert sq sqlist l,int pos,elemtype e 是在順序表的pos位置插入乙個元素e pos應該從1開始 函式status listdel...