C语言实现静态顺序表的实例详解

  

<强> 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语言实现静态顺序表的实例详解