顺序表
来源:互联网 发布:淘宝卖家发布宝贝流程 编辑:程序博客网 时间: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);
}
阅读全文
0 0
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 数据库那些事
- LinearLayout动态添加控件及将某XML动态加入到Activity显示(1)
- centos7.3实现基于源码编译安装LAMP的wordpress应用
- Java练习(4)
- 我的第001天学习记录
- 顺序表
- String相关知识
- StringBuilder类的常用方法 增删改查、反转、互转
- levelDB的效率
- 2017/10/6模拟赛总结
- 关联规则挖掘
- UVA 107 The Cat in the Hat
- 如何通俗易懂地解释卷积?
- 树的广度(深度)优先遍历算法