数据结构 线性表 顺序表 源代码C

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#define MAXSIZE 100 //MAXSIZE 为线性表可能的最大长度

#include

#include

typedef int ElemType;

typedef struct

{

ElemType data[MAXSIZE];

int length; // length为线性表的长度

} SqList;

SqList l; //线性表定义

void InitList(SqList &L) //初始化操作,将线性表L置空

{

L.length = 0;//g给顺序表长度初始化为0

}

void CreatSqlist(SqList &L,int n) //建立一个顺序存储的线性表

{

printf("请输入节点");

int i;

for(i=0;i

scanf("%d",&L.data[i]);//读取元素

L.length=n;//表的长度就是元素的个数

fflush(stdin); //清除一个流

}

void Output(SqList &L) //输出顺序表L

{

int i;

for(i=0;i

printf("%5d",L.data[i]); //每个数据占5列

printf("\n");

}

int DELETE(SqList &L,int i)//删除一个元素

{

int j;

if(i<1||i>L.length)//删除位置错误

{printf("error");return 0;}

else

{

for(j=i;j

L.data[j-1]=L.data[j];//依次把后一个元素往前移动一个位置L.length--;//删除之后长度减1

}

return 1;

}

int INSERT(SqList &L,int x,int i)//指定位置插入元素

{

int j;

if(L.length>=MAXSIZE-1)

{printf("over flow");return 1;}//上溢

else if((i<1)||(i>L.length+1))

{printf("error");return 1;}

else

{for(j=L.length;j>=i-1;j--)

L.data[j+1]=L.data[j];//元素位置依次后移一位

L.data[i-1]=x;//在第i个节点上插入x

L.length=L.length+1;//插入之后长度加1

}

return 0;

}

int GET(SqList &L,int i)//从表中获得一个元素

{

int m;

if((i<0)||(i>L.length)){printf("overflow");return 1;}

else if((i>=1)&&(i<=L.length))

{

m=L.data[i-1];

}printf("%d ",m);

return 0;

}

int chazhao(SqList &L,int x)//从表中查找元素

{

int i,k;

printf("\n请输入你要查找的元素x=?");

scanf("%d",&x);

for(i=0;i<=(L.length+1);i++)//从第一个元素开始查找,与X比较。

{

if(x==L.data[i])

{printf("要查找的元素%d 位于%d 上\n\n",x,i+1);

k=0;

break;

}

}

if(k!=0) printf("%d 不在表中",x);

return 0;

}

int PUEGE(SqList &L)// 删除线性表中重复出现的多余节点{

int i=1,j,x,y;

while(i

{x=L.data[i];

j=i+1;

/*for(j=i+1;j

while(j

{

y=L.data[j];

if(x==y)DELETE(l,j);

else j++;

}

i++;

}

return 0;

}

int main()

{int n,i,k,x;

InitList(l);

printf("请输入线性表的长度");

scanf("%d",&n);

CreatSqlist(l,n);

Output(l);

printf("请输入你要删除元素的位置=?");

scanf("%d",&k);

DELETE(l,k);Output(l);

printf("请输入想要插入的数和位置x,i=?");

scanf("%d,%d",&x,&i);

INSERT(l,x,i);Output(l);

printf("请输入你要取的数在的节点位置");

scanf("%d",&i);

GET(l,i);

chazhao(l,x);

PUEGE(l);

return 0;

}

相关文档
最新文档