线性表顺序结构增删改查
来源:互联网 发布:美即黑面膜怎么样 知乎 编辑:程序博客网 时间:2024/05/29 09:48
上次的博客我写了对于线性表的两种简单实现,今天我写一下对于线性表顺序结构的增、删、改、查的几种方式的实现。
#include<stdio.h>
char v[30];//上来你要设定一个数组来存储你的数据,这个数组的长度一定要大于你的数据个数。
int n;
void build();//声明两个函数一个是创建这个数组来存储数据
void display();//声明输出函数
void main()//主函数
{
n=26;
build();
display();
}
void build()//构造字母表
{
int i;
v[0]='a';//给数组的第一个元素赋值
for(i=1;i<n;i++)用循环来给剩下的数组依次赋值
{
v[i]=v[i-1]+1;
}
}
void display()//字母表的显示
{
int i;
for(i=0;i<30;i++)
{
printf("%c",v[i]);
}
printf("\n");
}
这是上次所编写的程序,我们会在他的基础之上增加四种功能的语句。
void insert()
{
int i,j;
char ch;
printf“输入你要插入的位置”;
scanf(“%d”,&i);
getchar();
scanf(“%c”,&ch);
for(j=0;v[j]!=NULL;j++)
{
int a=0;
a++;
}
If(a<=30)
{
for(j=a-1;j>=i-1;j++)
{
v[j+1]=v[j];
}
v[i]=(char)ch;
display();
}
else
printf(“内存不足无法储存”);
};
void chang()
{
Int i;
Char ch;
printf(“你要更改第几个数据”);
scanf(“%d”,&i);
getchar();
printf(“请输入更改之后的数据”);
Scanf(“%c”,&ch);
for(j=0;v[j]!=NULL;j++)
{
int a=0;
a++;
}
If(a<=30)
{
V[i-1]=(char)ch;
display();
}
else
printf(“内存不足无法储存”);
}
};
Void delete();
{
int i;
Printf(“请输入你要删除的数据”);
Scanf(“%d”,&i);
Getchar();
for(j=0;v[j]!=NULL;j++)
{
int a=0;
a++;
}
If(a<=30)
{
for(j=a-1;j>=i-1;j++)
{
v[j]= v[j+1];
}
Display();
}
我相信大部分人看了这个程序都是可以理解的,并不是很难。大多数人没有写出来的原因是因为,没有想好怎么去实现这些功能。c语言基础很差是一个很大的问题。对于数据结构的学习,必须要精通一门语言,无论哪一门并没有具体要求。
这个程序可能很多人不理解,为什么要在所有的 Scanf(“%d”,&i);
后边加了一个getchar。
这是不输入getchar的程序。在这里我简单解释一下,对于%d这个取值来说,他是不取回车键的,也就是说,当你在取%d的时候如果你输入回车他就会自动停止,但是对于%c来说,回车对他来说就是一个普通的字符,他就会记录到其中,也就是说如果不加入getchar这个语句。回车就会被%c所吸取,%c中的值就是回车。随意就会出现上述的情况。所以就需要一个getchar来专门吸收回车一个多余的数值。
为了方便大家看清我将更改的增加的都设定为数字,这样方便大家来看。
#include<stdio.h>
char v[30];
int n;
void build();//声明
void display();
void change();
void insert();
void Delete();
void main(void)
{
n = 26;
build();
display();
insert();
change();
Delete();
}
void build()//构造字母表
{
int i;
v[0] = 'a';
for (i = 1; i<n; i++)
{
v[i] = v[i - 1] + 1;
}
}
void display()//字母表的显示
{
int i;
for (i = 0; i<30; i++)
{
printf("%c", v[i]);
}
printf("\n");
}
void insert()//插入字母
{
int i, j = 0, a = 0;
char ch;
printf("请输入要插入的位置:");
scanf("%d", &i);
printf("请输入新元素:");
getchar();
scanf("%c", &ch);
for (j = 0; v[j] != NULL; j++)//计算数组用了多少空间
{
++a;
}
for (j = a - 1; j >= i - 1; j--)
{
v[j + 1] = v[j];
}
v[i] = (char)ch;
display();
}
void change()//修改字母
{
int i, j = 0, a = 0;
char ch;
printf("请输入要修改的位置:");
scanf("%d", &i);
getchar();
printf("请输入修改后的元素:");
scanf("%c", &ch);
for (j = 0; v[j] != NULL; j++)//计算数组用了多少空间
{
a++;
}
if (i>a || i <= 0)
{
printf("输入超限!");
return;
}
else
{
v[i - 1] = ch;
}
//打印
display();
}
void Delete()//删除字母
{
int i, j = 0, a = 0;
char ch;
printf("请输入要删除的位置:");
scanf("%d", &i);
for (j = 0; v[j] != NULL; j++)//计算数组用了多少
{
a++;
}
for (j = i - 1; j + 1 <= a; j++)
{
v[j] = v[j + 1];
}
//打印
display();
}
- 线性表顺序结构增删改查
- 数据结构线性表的动态顺序实现增删改查
- 顺序线性列表的增删查改
- 线性表的“增删改查”
- 线性表的完善增删改查
- 【数据结构】顺序表的增删改查
- 顺序表的增删改查
- 顺序表的增删改查实现
- 顺序表的增删改查操作
- 顺序表的增删改查
- 数据结构顺序表的增删查改
- 顺序表实现增删查改
- JAVA采用数组结构实现一个线性表,可以增删改查,类似于ArrayList
- 表结构的增删查改
- 顺序表的实现及增删查改
- (数据结构)顺序表的建立,增删查改
- 数据结构之顺序表的建立和增删改查
- 顺序表的建立及增删查改
- Kali linux渗透测试(七)
- TCP和UDP的区别和应用
- nio基本使用
- 【知了堂学习笔记】Model1、Model2和MVC架构模式
- poj 1451 难度:中等 字典树+搜索
- 线性表顺序结构增删改查
- STL库中的list的使用和模拟实现
- JS加载与运行
- JVM类加载过程,JDK和JER区别
- log4j学习笔记
- Product of Array Except Self
- [Java--面试]--阿里巴巴面试2016
- 二分查找,你真的懂吗
- 欢迎使用CSDN-markdown编辑器