概述
线性表包括顺序结构和链式结构,这里介绍的是顺序结构,为了方便就用数组表示,其操作包括增,删,改,查,
其中改和查用数组的下标可以很方便的操作,增加和删除需要一些代码实现。
其中增加的是在一个线性表插入一个元素,这个元素必须在1~N+1之间
其核心思想是先判断要插入的数据是否在1~N+1之间,然后把i~N之间的数据向后移动一位,
最后插入,长度增加1。
核心代码如下:
for(int j=N+1; j>=i; j--)
arry[j] = arry[j-1];
删除是删除指定的位置删除一个元素,这个元素在1~N之间,其核心思想是先判断要删除的元素
是否在1~N之间,然后把i~N之间的元素向前移动一位,第N个元素置0,长度减1;
核心代码如下:
for(int j=i+1; j<=N; j++)
arry[j-1] = arry[j];
下面是一个完整的例子实现线性表的顺序结构的增加和删除
#include<stdlib.h>
#include <stdio.h>
#include<time.h>
#include<math.h>
#define MAX_LEN 1024
#define NUM 3
#define SUCCESS 0
#define ERROR -1
template<class T>
int InitData(T *arry, int size)
{
for(int i=0; i<size; i++)
{
arry[i] = i+1;
}
return SUCCESS;
}
//在1~len 之间的num插入data
template<class T>
int InsertData(T *arry, int len, T data, int num)
{
if(num<1 || num>len+1)
return ERROR;
for(int i=len; i>=num; i--)
{
arry[i] = arry[i-1];
}
arry[num-1] = data;
return len+1;
}
//删除1~len中第num的数据
template<class T>
int DeleteData(T *arry, int len, int num)
{
if(num<1 || num>len)
return ERROR;
for(int i=num+1; i<=len; i++)
{
arry[i-1-1] = arry[i-1];
}
arry[len-1] = 0;
return len-1;
}
template<class T>
void DataShow(T *arry, int size)
{
for(int i=0; i<size; i++)
{
printf("%dt",arry[i]);
}
printf("n");
}
int main()
{
int arry[MAX_LEN]={0};
InitData(arry,5);
DataShow(arry,5);
InsertData(arry,5,7,3);
DataShow(arry,6);
int ret = DeleteData(arry,6,1);
DataShow(arry,ret);
getchar();
return 0;
}
最后
以上就是细腻蜜粉为你收集整理的线性表的顺序表示的增加和删除的全部内容,希望文章能够帮你解决线性表的顺序表示的增加和删除所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复