您的位置:首页 > 其它

顺序表的创建、插入、删除、查找、求表长、输出元素

2018-01-11 16:15 288 查看
//线性表的顺序存储(顺序表)
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define MAXLEN 10    // 定义顺序表的最大长度MAXLEN为10
typedef struct{      //定义节点
int data[MAXLEN];
int last;        //last用来记录当前线性表中最后一个元素的数组中的位置,即last起到了指针的作用
}SeqList;
SeqList *InitList()  //初始化顺序表的函数
{
SeqList *L;
L=new SeqList;
L->last=-1;      //初始化的时候顺序表为空,所以last的值设置为-1
return L;
}
int InsList(SeqList *L,int i,int x)  //对顺序表进行插入,i是插入的位置,x是插入的数据
{
int j;
if(L->last==MAXLEN-1)        //首先判断顺序表是否已满,如果满了的话,则return -1
{
printf("顺序表已满!");
return -1;
}
if(i<1||i>L->last+2)        //判断插入位置是否正确
{
printf("插入位置出错!");
return 0;
}
for(j=L->last-1;j>=i;j--)
L->data[j+1]=L->data[j];
L->data[i-1]=x;
L->last++;
return 1;
}
int DelList(SeqList *L,int i)    //删除第i个位置上的元素的函数
{
int j;
if(i<1||i>L->last+1)
{
printf("不存在第%d个元素!",i);
return 0;
}
for(j=i-1;j<=L->last-1;j++)
L->data[j]=L->data[j+1];
L->last--;
return 1;
}
int SearchList(SeqList *L,int x)   //搜索元素x,若存在则返回它的位置,若不存在则返回-1
{
int j;
for(j=0;j<=L->last;j++)
if(L->data[j]==x)
break;
if(j<=L->last)
return j+1;
else
return -1;
}
void LengthList(SeqList *L)     //求顺序表长度的元素
{
printf("顺序表的长度为:%d\n",L->last+1);
}
void PrintList(SeqList *L)      //输出顺序表中所有的元素
{
int i;
for(i=0;i<=L->last;i++)
printf("%d  ",L->data[i]);
}
int main()                //在main函数中,对一些函数进行测试,你们可以自己写代码测试
{
SeqList *L;
L=InitList();
InsList(L,1,1);
InsList(L,2,2);
InsList(L,3,3);
InsList(L,4,4);
InsList(L,5,5);
LengthList(L);
PrintList(L);
printf("\n");
DelList(L,6);
printf("\n");
PrintList(L);
printf(" %d ",SearchList(L,3));
printf("\n");
printf(" %d ",SearchList(L,8));
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐