#include  "stdafx.h"
#include<stdio.h>
#include<stdlib.h>
#define
#define
#define
#define
#define
typedef int
//定义SqList为结构类型
typedef struct{
ElemType *elem;
intlength;
intlistsize;
}SqList;

//建立一个顺序表
int
{
sizeof(ElemType));
if(!L.elem)exit(OVERFLOW);
L.length=0;
L.listsize=STACK_INIT_SIZE;
returnOK;
}

//向顺序表中充入元素
int Input(SqList &L,int
{
inta=x;
int* w;
"请输入%d个整数组成线性表L:\n",a);
for(w=L.elem;w<L.elem+a;w++)
"%d",w);
"当前的线性表L为:\n");
for(w=L.elem;w<L.elem+a;w++)
"%d ",*w);
"\n");
L.length=a;
returnOK;
}

//插入元素函数
int ListInsert_Sq(SqList &L,intx)
{
int*p,*q;
intc;
"请输入要插入线性表L的整数元素:\n");
"%d",&c);
q=L.elem+x-1;
for(p=L.elem+L.length-1;p>=q;--p)*(p+1)=*p;
*q=c;
"当前的线性表L为:\n");
L.length++;
for(p=L.elem;p<L.elem+L.length;p++)
"%d ",*p);
returnOK;
}

//删除元素函数
int ListDelete_Sq(SqList &L,intx)
{
int*p,*q;
intc=x;
q=L.elem+c-1;
"删除线性表L的元素为:\n%d",*q);
for(p=L.elem+c;p<L.elem+L.length;p++)*(p-1)=*p;
L.length--;
"\n当前的线性表L为:\n");
for(p=L.elem;p<L.elem+L.length;p++)
"%d ",*p);
returnOK;
}

//取元素个数函数
int
{
"当前线性表L的元素个数为:\n%d",L.length);
returnOK;
}

//查找元素位置函数
int LocateElem(SqList &L,intx)
{
inta=x;
inti;
int*p;
for(p=L.elem,i=1;p<L.elem+L.length,i<=L.length;p++,i++)
if(*p!=a)
continue;
"这是线性表L的第%d个元素\n",i);}
returnOK;
}

//归并两线性表的函数
int
{
inta,b,i;
int*p,*q,*w;
"请输入线性表La的元素个数:\n");
"%d",&a);
La.length=a;
"请充入线性表La%d个元素:\n",La.length);
for(p=La.elem;p<La.elem+La.length;p++)
"%d",p);
"线性表La为:\n");
for(p=La.elem;p<La.elem+La.length;p++)
"%d ",*p);
"\n");
"请输入线性表Lb的元素个数:\n");
"%d",&b);
Lb.length=b;
"请充入线性表Lb%d个元素:\n",b);
for(q=Lb.elem;q<Lb.elem+Lb.length;q++)
"%d",q);
"线性表Lb为:\n");
for(q=Lb.elem;q<Lb.elem+Lb.length;q++)
"%d ",*q);
"\n");
Lc.length=La.length+Lb.length;
p=La.elem;
q=Lb.elem;
w=Lc.elem;
for(i=1;i<=La.length;i++)
{*w=*p;w++;p++;}
for(i=1;i<=Lb.length;i++)
{*w=*q;w++;q++;}
"归并后的线性表为:\n");
for(p=Lc.elem;p<Lc.elem+Lc.length;p++)
"%d ",*p);
returnOK;
}

//主函数
void
{
SqList L,La,Lb,Lc;
InitList_Sq(L);
InitList_Sq(La);
InitList_Sq(Lb);
InitList_Sq(Lc);
"请输入线性表L元素的个数(线性表长度):\n");
intk;
intt;
"%d",&k);
Input(L,k);
intflag=1,select;
"====================菜单============================\n");
"= 1.插入元素 =\n");
"= 2.删除元素 =\n");
"= 3.取元素个数 =\n");
"= 4.查找元素位置 =\n");
"= 5.两线性表合并 =\n");
"= 6.结束操作 =\n");
"================支持乱序选择========================\n");
while(flag){
"\n请选择菜单中的操作选项:\n");
"%d",&select);
switch(select)
{
case1:
"请输入要插入的元素位置(使之成为第几个元素):\n");
"%d",&t);
break;
case2:
"请输入要删除的元素位置(第几个元素):\n");
"%d",&t);
break;
case3:
break;
case4:
"请输入要查找的元素:\n");
"%d",&t);
break;
case5:
break;
case6:
break;
default:printf("您输入的数据有误!\n");
}
}

}