<强> C语言实现静态顺序表的实例详解强>
<强>线性表强>
定义一张顺序表也就是在内存中开辟一段连续的存储空间,并给它一个名字进行标识。只有定义了一个顺序表,才能利用该顺序表存放数据元素,也才能对该顺序表进行各种操作。
接下来看看静态的顺序表,直接上代码:
<强> SeqList.h 强>
#定义_CRT_SECURE_NO_WARNINGS 1 的ifndef __SEQLIST_H__ #定义__SEQLIST_H__ # include & lt; stdio.h> # include & lt; stdlib.h> # include & lt; assert.h> # include & lt; string.h> #定义最大10 typedef int数据类型; typedef struct SeqList { 数据类型数据(MAX); int深圳; * pSeqList} SeqList; 空白InitSeqList (pSeqList ps); 无效的阻力(pSeqList ps,数据类型d); 空白PopBack (pSeqList ps); 空白PushFront (pSeqList ps,数据类型d); 空白PopFront (pSeqList ps); 空白显示(const pSeqList ps); int找到(pSeqList ps,数据类型d); 插入空白(pSeqList ps,数据类型d, int pos); 空白删除(pSeqList ps,数据类型d); 空白RemoveAll (pSeqList ps、数据类型d); 无效的反向(pSeqList ps); 孔隙类型(pSeqList ps); int BinarySearch (pSeqList ps,数据类型d); # endif//__SEQLIST_H__ >之前<强> SeqList.c 强>
#定义_CRT_SECURE_NO_WARNINGS 1 # include“SeqList.h” 空白InitSeqList (pSeqList ps) { 断言(ps); ps→深圳=0; memset (ps→数据,0,sizeof(数据类型)* MAX); } 孔隙阻力(pSeqList ps,数据类型d) { 断言(ps); 如果(ps→深圳==MAX) { 返回; } ps→数据(ps:深圳,)=d; ps→深圳+ +; } 空白PopBack (pSeqList ps) { 断言(ps); 如果(ps→深圳==0) { 返回; } ps→sz——; } 空白PushFront (pSeqList ps,数据类型d) { int i=0; 断言(ps); (i=ps→深圳;我在=1;我——) { ps→数据[我]=ps→数据(i - 1); } ps→数据[0]=d; ps→深圳+ +; } 空白PopFront (pSeqList ps) { int i=0; 断言(ps); (我=0;我& lt;ps→深圳;我+ +) { ps→数据[我]=ps→数据(i + 1); } ps→sz——; } 空白显示(const pSeqList ps) { int i=0; 断言(ps); (我=0;我& lt;ps→深圳;我+ +) { printf (" % d”、ps→数据[我]); } printf (" \ n "); } int找到(pSeqList ps,数据类型d) { int i=0; 断言(ps); (我=0;我& lt;ps→深圳;我+ +) { 如果(ps→数据(我)==d) { 返回我; } } 返回1; } 插入空白(pSeqList ps,数据类型d, int pos) { int i=0; 断言(ps); 如果(ps→深圳==MAX) { 返回; }//方式一//(i=ps→sz - 1;我在=pos;我——)//{//ps→数据(i + 1)=ps→数据(我);//}//方式二 memmove (ps→数据+ pos + 1, ps→数据+ pos, sizeof(数据类型)* (ps→sz - pos)); ps→数据(pos)=d; ps→深圳+ +; } 空白删除(pSeqList ps,数据类型d) { int i=0; int pos=0; 断言(ps); pos=找到(ps d); 如果(pos !=1) { (我=pos;我& lt;ps→深圳;我+ +) { ps→数据[我]=ps→数据(i + 1); } ps→sz——; } } 空白RemoveAll (pSeqList ps,数据类型d) { int i=0; int pos=0; 断言(ps); pos=找到(ps d); 在((pos=发现(ps d)) !=1) { (我=pos;我& lt;ps→深圳;我+ +) { ps→数据[我]=ps→数据(i + 1); } ps→sz——; } } 无效的反向(pSeqList ps) { int左=0; int右=ps→sz - 1; 断言(ps); 而(左& lt;右) { 数据类型tmp=ps→数据(右); ps→数据[右]=ps→数据(左); ps→数据(左)=tmp; 左+ +; 正确的,; } } 孔隙类型(pSeqList ps) { int i=0; int j=0; 断言(ps); (我=0;我& lt;ps→深圳;我+ +) { (j=0;j & lt;ps→sz -我- 1;j + +) { 如果(ps→数据[j]在ps→数据[j + 1]) { 数据类型tmp=ps→数据[j]; ps→数据[j]=ps→数据(j + 1); ps→数据[j + 1]=tmp; } } } } int BinarySearch (pSeqList ps,数据类型d) { int左=0; int右=ps→sz - 1; 而(左& lt;=) { int中期=左-((左,右)在祝辞1); 如果(d比;ps→数据(中期)) { 左=中期+ 1; } else if (d & lt;ps→数据(中期)) { 对中期=1; } 其他的 { 返回中期; } } 返回1; }C语言实现静态顺序表的实例详解