数据结构-线性表操作-创新互联

#include      //c++头文件
using namespace std;  
#define LIST_INIT_SIZE 20     //预定义常量
#define LISTINCREMENT 5
#define OK 1
#define ERROR 0
typedef int ElemType;              //定义类型
typedef int Status;
typedef struct                        //线性表结构体定义
{
   ElemType *elem;
   int length;
   int listsize;
}SqList;

Status InitList_Sq(SqList &L)                        //创建空的线性表
{
   L.elem=new ElemType[LIST_INIT_SIZE];             //申请空间
   L.length=0;                                      //令表中数据长度为零
   L.listsize=LIST_INIT_SIZE;                       //将所申请的空间给予元素空间
   return OK;                         
}
Status CreateList_Sq(SqList &L,int n)                   //创建一个线性表
{
 int i;
 InitList_Sq(L);                                      //创建空表
 if(n>L.listsize)                                       //保证空间足够
 {
   //续开辟空间
 }
    L.length=n;                                          
 cout<<"please input "<>L.elem[i];
 return OK;
}
Status OutputList_Sq(SqList L)                       //输出线性表
{
  int i;
  cout<<"The list is:";
  for(i=0;iL.length+1)               //     (1)判断插入元素下标i的合法性(1---L.length+1)
   return ERROR;
  if(L.length>=L.listsize)            //判断空间是否够用
  {
    //续开辟空间
  }
  for(j=L.length-1;j>=i-1;j--)         //   (2)  下标L.length-1----i-1的元素,后移一个位置
   L.elem[j+1]=L.elem[j];
  L.elem[i-1]=e;                       //     (3)      插入e(下标i-1)
  L.length++;                           //    (4)       数据元素长度加一
  return OK;
}
Status ListDelete_Sq(SqList &L,int i,ElemType &e)                //删除元素,并用e返回该数据
{
 int *p,*q;
   if(i<1||i>L.length)                                            //  (1)  判断插入元素下标i的合法性(1---L.length+1)
    return ERROR;
   p=&(L.elem[i-1]);                                              //   (2)      取第i个元素的地址,并用e取其中数据
   e=*p;
   q=L.elem+L.length-1;            //最后(表尾)元素的位置
   for(++p;p<=q;++p)
    *(p-1)=*p;                                                  //   (3)   元素依次左移
   --L.length;                                                     //    (4)      元素长度减一
   return e;
}

Status ListLength_Sq(SqList &L)             //求元素长度
{
 int i,p=0;
 for(i=0;iL.length)                                            
    return ERROR;
 else{ 
  p=&(L.elem[i-1]);
        e=*p;
 }
   return e;
}

Status DestroyList(SqList &L)                       //销毁线性表
{
free(L.elem);                                       //释放空间
L.elem=NULL;
L.length=0;
L.listsize=0;
cout<< "线性表已销毁! "<

创新互联主要从事网站制作、网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务修武,10多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


名称栏目:数据结构-线性表操作-创新互联
浏览地址:http://myzitong.com/article/cooeei.html