您的位置:首页 > 理论基础 > 数据结构算法

数据结构之简单的顺序表

2017-09-30 16:23 323 查看
简单的顺序表,包含对顺序表的插入、删除、取值。

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#define Maxsize 50
typedef struct SqList{
int* data;
int length;
};
// ---------------------------- 初始化-----------------------------
bool InitList(struct SqList* L)
{
L->data=(int*)malloc(sizeof(int)*(Maxsize));
int i=0;
for(i=0;i<Maxsize/2;i++)
{
L->data[i]=rand()%100;
}
L->length=Maxsize/2;
return true;
}

//-----------------------------插入----------------------------------
bool ListInsert(struct SqList *L,int i,int e)
{
if(i<1||i>L->length+1)
return false;
if(L->length>=Maxsize)
return false;
int j=0;
for( j=L->length;j>=i;j--)
{
L->data[j]=L->data[j-1];
}
L->data[i-1]=e;
L->length++;
return true;
}
//---------------------------删除----------------------------------
bool ListDelete(struct SqList* L,int i,int e)        //删除指定i位置的元素,并把被删除元素保存在e中
{
if(i<1||i>L->length)
return  false;
e=L->data[i-1];
int j=0;
for(j=i;j<L->length;j++)
{
L->data[j-1]=L->data[j];
}
L->length-- ;
return true ;

}
//--------------------------查找--------------------------------
int LocateElem(struct SqList* L,int e)
{
int i=0;
for(i=0;i<L->length;i++)
{
if(L->data[i]==e)
return i+1;
}
return 0;
}

void print(struct SqList *L)
{
int j=L->length;
int i=0;
for(i=0;i<j;i++)
{
printf("%d ",L->data[i]);
}
printf("\n");
}
int main()
{
//-------------------初始化顺序表--------------------

struct SqList L;
if(InitList(&L)==true)
{
printf("顺序表初始化成功!\n");
}
print(&L);

//-------------------在第一个位置上插入元素---------------
printf("\n\n");
if(ListInsert(&L,1,100)==true)
{
printf("在第1个位置插入元素100!\n");
}
else
{
printf("插入失败!\n");

}
print(&L);
printf("\n\n");

//------------------删除第二个位置上的元素--------------------
int ee;
if(ListDelete(&L,2,ee)==true)
printf("删除成功,删除第2个元素,删除的元素是%d\n",ee);
else
printf("删除失败\n");
print(&L);
printf("\n\n");

//-----------------按值查找元素位置------------------------
int locate=LocateElem(&L,100);
printf("元素100在顺序表中所在的位置是 第%d个\n",locate);

}


运行结果:



以后会逐渐更新关于数据结构的知识。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: