一、實驗目的
通過該實驗,深入理解順序表的邏輯結構、物理結構等概念,掌握順序表基本操作的程式設計實現,注意順序表插入、刪除等操作過程中資料元素的移動現象,培養學生編寫程式時,要考慮程式的強壯性,熟練掌握通過函式引數返回函式結果的辦法。
二、實驗內容
程式設計實現順序表的基本操作,最好用選單形式對應各個操作,使其編成乙個完整的小軟體。
三、主要源**
#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...