数据结构(C语言):顺序表
#include<stdio.h>
#include<stdlib.h>
#define ERROR 0
#define OK 1
typedef int Elemtype;
typedef int status;
#define maxsize 50
typedef struct{
int data[maxsize];
int length;
}sqList;
void InitList(sqList &L){
for(int i=0;i<maxsize;i++)
L.data[i]=0;
L.length=0;
}
status ListDelete(sqList &L,int i,Elemtype &e){
if(i<1||i>L.length)
return 0;
e=L.data[i-1];
for(int j=i;j<L.length;j++)
L.data[j-1]=L.data[j];
L.length--;
return 1;
}
status ListInsert(sqList &L,int i,Elemtype e){
if(i<1||i>L.length+1)
return 0;
if(L.length>=maxsize)
return 0;
for(int j=L.length;j>=i;j--)
L.data[j]=L.data[j-1];
L.data[i-1]=e;
L.length++;
return 1;
}
status GetList(sqList &L)
{
int i;
printf("请输入线性表元素:");
for (i=0;i<L.length;i++)
{
scanf("%d",&L.data[i]);
}
printf("您输入的元素为:");
for (i=0;i<L.length;i++)
{
printf("%3d",L.data[i]);
}
printf("\n");
return OK;
}
status LocatElem(sqList L,Elemtype e){
int i;
for(i=0;i<L.length;i++)
if(L.data[i]==e)
return i+1;
return 0;
}
int main(){
sqList L;
InitList(L);
int i;
//输出顺序表中数据元素
printf("请输入顺序表的长度:");
scanf("%d", &L.length);
GetList(L);
//删除数据元素
printf("请输入在第几个位置删除元素:");
scanf("%d",&i);
int e;
ListDelete(L,i,e);
printf("删除数据元素为:%d",e);
printf("\n");
printf("已删除第%d个数据元素后的顺序表为:",i);
for (i=0;i<L.length;++i)
{
printf("%3d",L.data[i]);
}
printf("\n");
//插入数据元素
printf("请输入在第几个位置前插入元素:");
scanf("%d",&i);
printf("插入的元素是:");
scanf("%d",&e);
ListInsert(L,i,e);
printf("在线性表的第%d个元素前插入正整数%d后的顺序表:\n",i,e);
for (i=0;i<L.length;++i)
{
printf("%3d",L.data[i]);
}
printf("\n");
}
对于初学者很适合,若有改进的地方,请大家积极尽言!!