线性表之顺序表的十大操作(从初始化到释放)C语言版 | 您所在的位置:网站首页 › 初始化顺序表c语言 › 线性表之顺序表的十大操作(从初始化到释放)C语言版 |
语⾔版 # include
# include
# define MAXSIZE 50 // 线性表的存储区的总长度 typedef
struct {
int
* data ;
// 指向数据区地址 , 假设存储 int 型
int size ;
// 当前顺序表的长度 } SqList ; void
Initialise ( SqList * List )
// 初始化顺序表 { List -> data = ( int
* ) malloc ( sizeof ( int ) * MAXSIZE );
// 为顺序表申请空间 List -> size = 0 ;
printf ( "--------- 申请空间结束 " ); } void
DelList ( SqList * List )
// 释放顺序表 {
free ( List -> data );
//free 释放了 data 指针指向的内存块,告诉系统该块内存闲置,但 date 仍然指向该内存块⾸地址,故需赋值为 NULL ; List -> data = NULL ; List -> size = 0 ;
printf ( "\n 删除成功 " ); } int
JudEmpty ( SqList * List )
// 判断顺序表书否为空 {
if ( List -> size == 0 )
return
1 ;
else
return
- 1 ; } int
Length ( SqList * List )
// 求顺序表表长 {
int size = 0 ;
for ( int i = 0 ; List -> data [ i ] != NULL ; i ++ ) size ++ ;
return size ; } void
Output ( SqList * List )
// 输出顺序表 {
for ( int i = 0 ; i size ; i ++ )
{
printf ( "\n 第 %d 个数据是: %d" , i , List -> data [ i ]);
}
printf ( "\n--------- 输出结束。 " ); } void
Insert ( SqList * List , int l , int data )
// 插⼊ {
if ( l List -> size + 1 || l >= MAXSIZE )
// 判断插⼊位置是否合法,需要在第⼀个元素到最后⼀个元素的后⼀位之间 , 且不能超过最⼤长度
{
printf ( "illgal location" );
return
- 1 ;
}
for ( int i = List -> size ; i > l - 1 ; i -- )
{ List -> data [ i ] = List -> data [ i - 1 ];
// 所有元素后移⼀位
} List -> data [ l - 1 ] = data ;
// 插⼊ data 在 l 的位置(下标是 l-1 ) List -> size ++ ;
printf ( "\n 插⼊位置 : %d\n--------- 插⼊结束 " , l ); } int
Loc_Search ( SqList * List , int l )
// 按位查找 {
if ( l List -> size )
return
- 1 ;
return List -> data [ l - 1 ]; |
CopyRight 2018-2019 实验室设备网 版权所有 |