顺序表

来源:互联网 发布:淘宝卖家发布宝贝流程 编辑:程序博客网 时间:2024/05/17 19:21

现在是学生,刚接触C语言以及数据结构,初次写博客,在这里提供顺序表的增删改查,希望能够对新手们有所帮助!若有错误也希望大佬们能够指出。


#include <stdio.h>

#include <stdlib.h>
#include <malloc.h>
typedef struct                                   //定义顺序表 
{
int data[100];
int length;
}SeqList, *PSeqList;


PSeqList Init_SeqList(void)                    //初始化顺序表 
{
PSeqList PL;
PL = (PSeqList)malloc(sizeof(SeqList));
if (PL)
PL->length = 0;
return (PL);
}


void Crea_SeqList(PSeqList PL)                   //顺序表赋值 
{
int i;
printf("请输入你要创建元素表的长度:");
scanf("%d", &PL->length);
printf("请输入你要创建的顺序表:");
for (i = 0; i<PL->length; i++)
scanf("%d", &PL->data[i]);
}


void Printf_SeqList(PSeqList PL)                  //输出顺序表 
{
int i;
printf("您创建的顺序表:");
for (i = 0; i<PL->length; i++)
printf("  %d  ", PL->data[i]);
}


int Lenght_SeqList(PSeqList PL)                   //求顺序表长度 
{
return (PL->length);
}


int Location_SeqList(PSeqList PL, int x)           //检索顺序表 
{
int i = 0;
while (i<PL->length && PL->data[i] != x)
i++;
if (i >= PL->length)
{
printf("未检索到x\n");
return 0;
}
else
{
printf("检索到目标\n");
return (i + 1);
}
}


int Insert_SeqList(PSeqList PL, int i, int x)        //在第i个元素的位置插入x 
{
int j;
if (!PL)
{
printf("表不存在,不能插入\n");
return (-2);
}
if (PL->length >= 100)
{
printf("表空间已满,不能插入\n");
return (-1);
}
if (i<1 || i>PL->length + 1)
{
printf("插入位置不合法\n");
return (0);
}
for (j = PL->length - 1; j >= i - 1; j--)
PL->data[j + 1] = PL->data[j];
PL->data[i - 1] = x;
PL->length++;
return(1);
}


int Delete_SeqList(PSeqList PL, int i)           //删除第i个元素 
{
int  j;
if (!PL)
{
printf("顺序表不存在");
return(-1);
}
if (i<1 || i> PL->length)
{
printf("删除位置不合法");
return(0);
}
for (j = i; j< PL->length; j++)
PL->data[j - 1] = PL->data[j];
PL->length--;
return (1);
}


int main()
{
SeqList l;
PSeqList pl;
pl = &l;
int len, y, i, x, m;       /*len:求表的长度 y:检索的值  i:插入元素的位置 x:插入元素的值  m:删除元素位置*/
pl = Init_SeqList();                                  //初始化顺序表
Crea_SeqList(pl);                                //顺序表赋值
len = pl->length;
Printf_SeqList(pl);                              //输出顺序表
printf("\n");
printf("顺序表的长度%d\n", len);                //求顺序表长度
printf("请输入要检索的值:");                    //检索顺序表
scanf("%d", &y);
Location_SeqList(pl, y);
printf("请输入你要插入元素的位置i和值:");      //在第i个元素的位置插入x
scanf("%d%d", &i, &x);
Insert_SeqList(pl, i, x);
Printf_SeqList(pl);
printf("\n");
printf("请输入您要删除元素的位置m:");         //在第i个元素的位置插入x 
scanf("%d", &m);
Delete_SeqList(pl, m);
Printf_SeqList(pl);
}