顺序表( Seqlist)的定义 define listsize100/最大允许长度 ypedef int ListData; typedef struct i ListData data://存储数组 int length; ∥/当前元素个数 3 SeqList;
顺序表(SeqList)的定义 #define ListSize 100 //最大允许长度 typedef int ListData; typedef struct { ListData * data; //存储数组 int length; //当前元素个数 } SeqList;
顺序表基本运算的实现 构造一个空的顺序表 void InitList( SeqList &l)i L data=( ListData *)malloc Listsize* sizeof listData )); if (L data=- NULL) printf(存储分配失败!n”); exit (1); Llength=0
顺序表基本运算的实现 ◼ 构造一个空的顺序表 void InitList ( SeqList & L ) { L.data = ( ListData * ) malloc ( ListSize * sizeof ( ListData ) ); if ( L.data == NULL ) { printf ( “存储分配失败!\n” ); exit (1); } L.length = 0; }
求表的长度 int Length( SeqList &l)i return L length; a提取函数:在表中提取第i个元素的值 ListData GetData( Seqlist &l, int 1)( if (i>=0 &&i< L length return Ldatai; printf(“参数i不合理!n”); else ∥/在出错情况。函数返回值不能用!
◼ 求表的长度 int Length ( SeqList & L ) { return L.length; } ◼ 提取函数:在表中提取第 i 个元素的值 ListData GetData ( SeqList &L, int i ) { if ( i >= 0 && i < L.length ) return L.data[i]; else printf ( “参数 i 不合理!\n” ); } //在出错情况,函数返回值不能用!
按值查找:在顺序表中从头查找结点值 等于给定值x的结点 int Find( SeqList &L, ListDatax)i inti=0 while(i<Llength & Ldatai]=x) 1++; if(1< Llength )return i else return-l
◼ 按值查找:在顺序表中从头查找结点值 等于给定值 x 的结点 int Find ( SeqList &L, ListData x ) { int i = 0; while ( i < L.length && L.data[i] != x ) i++; if ( i < L.length ) return i; else return -1; }
顺序查找图示 012345 data253457164809 查找16i 253457164809 253457164809 it 253457164809 计查找成功
顺序查找图示 25 34 57 16 48 09 0 1 2 3 4 5 data 查找 16 i 25 34 57 16 48 09 i 25 34 57 16 48 09 i 25 34 57 16 48 09 i 查找成功