文档库 最新最全的文档下载
当前位置:文档库 › 顺序存储结构上线性表基本操作实现及应用

顺序存储结构上线性表基本操作实现及应用

#include
#include
#define MAXSIZE 10
typedef int DataType;
typedef struct node {
DataType data[MAXSIZE];
int listlen;
} SeqList, *PSeqList;



PSeqList Init_SeqList()
{ /*创建一顺序表,入口参数无,返回一个指向顺序表的指针,指针值为零表示分配空间失败*/
PSeqList PL;
PL=(PSeqList)malloc(sizeof(SeqList));
if (PL) /*若PL=0表示分配失败*/
PL->listlen=0;
return PL;
}
/*void Increate_SeqList(PSeqList PL,int n)
{
int i;
PL->listlen=n;
printf("请输入%d个整数:\n",n);
for(i=0;iprintf("第%d个元素为:",i+1);
scanf("%d",&PL->data[i]);
}
}*/

void Destroy_SeqList(PSeqList PL)
{ /*销毁顺序表,入口参数:为要销毁的顺序表指针地址,无返回值*/
if (PL)
free (PL) ;
PL=NULL;
return ;
}


int Length_SeqList (PSeqList L)
{ /*求顺序表的长度,入口参数:为顺序表指针,返回表长,0表示表不存在*/
if(L)
return L->listlen ;
return 0;
}


int Location_SeqList (PSeqList L, DataType x)
{
/*顺序表检索,入口参数:为顺序表指针,检索元素,返回元素位置,-1表示表不存在,0表示查找失败*/
int i=0;
if(!L) {
printf("表不存在\n");
return -1;
}
while (L&&L->data[i]!=x)
i++;
if (i>=L->listlen) return 0;
else return (i+1);
}


int Insert_SeqList(PSeqList PL, int i, DataType x)
{ /*顺序表插入,入口参数:顺序表指针,插入位置,插入元素,
返回标志,1表示成功,0表示插入位置不合法,-1表示溢出,-2表示表不存在*/

if(i<1||i>PL->listlen+1)
return 0;
else if(!PL)
return -2;

else{
PL->data[i-1]=x;
++PL->listlen;
if(PL->listlen==MAXSIZE)
return -1;
}
return 1;


}



int Delete_SeqList(PSeqList PL,int i)
{ /*顺序表删除,入口参数:顺序表指针,删除元素位置,
返回标志1表示成功,0表示删除位置不合法,-1表示表不存在*/
int j;
if(i<1||i>PL->listlen)
return 0;
else if(!PL)
return -1;
else
for(j=i-1;jlistlen;j++)
PL->data[j]=PL->data[j+1];
--PL->listlen;
return 1;



}

void Print_SeqList(PSeqList PSList){//输出线性表的中元素的值
int i;
for(i=0;ilistlen;i++)
printf("%-3d",PSList->data[i]);
printf("\n");


}




void main()
{
SeqList *PSList;
int i,n,e,x;
printf("-----------------线性表初始化操作--------------------------\n");
PSList=Init_SeqList();
printf("线性表初始化操作完成\n");
/* printf("------------------线性表创建操作-----------------------------\n");
printf("请输入线性表的长度\n");
scanf("%d",&n);

Increate_SeqList(PSList,n);
printf("线性表创建建操作完成\n");*/
printf("-------------------插入操作--------------------------------\n

");
printf("请输入插入线性表的元素个数: ");
scanf("%d",&n);
for(i=0;iprintf("请输入插入线性表的第%d元素:",i+1);
scanf("%d",&x);
Insert_SeqList(PSList,i+1,x);
}
printf("线性表中已经插入%d个元素\n",n);
printf("线性表插入操作完成\n");
printf("线性表中的元素:");
Print_SeqList(PSList);

printf("--------------------删除操作-----------------------------------\n");
printf("请输入删除元素的位置:");
scanf("%d",&i);
Delete_SeqList(PSList,i);
printf("线性表删除操作完成\n");
printf("线性表长度:%d\n",Length_SeqList(PSList));
printf("线性表中的元素:");
Print_SeqList(PSList);

printf("--------------------检索操作-----------------------------------\n");
printf("请输入被检索的数据的值:");
scanf("%d",&e);
printf("数据在顺序表中的位置为:%d\n",Location_SeqList (PSList,e));
printf("检索操作完成\n");


printf("------------------销毁操作----------------------------------\n");
Destroy_SeqList(PSList);
printf("销毁操作完成\n");

}
运行结果:


-----------------线性表初始化操作--------------------------
线性表初始化操作完成
-------------------插入操作--------------------------------
请输入插入线性表的元素个数: 3
请输入插入线性表的第1元素:1
请输入插入线性表的第2元素:2
请输入插入线性表的第3元素:3
线性表中已经插入3个元素
线性表插入操作完成
线性表中的元素:1 2 3
--------------------删除操作-----------------------------------
请输入删除元素的位置:1
线性表删除操作完成
线性表长度:2
线性表中的元素:2 3
--------------------检索操作-----------------------------------
请输入被检索的数据的值:2
数据在顺序表中的位置为:1
检索操作完成
------------------销毁操作----------------------------------
销毁操作完成
Press any key to continue



相关文档
相关文档 最新文档