概述
/*顺序表的插入
利用前面的实验先建立一个顺序表L={21,23,14,5,56,17,31}
然后在第i个位置插入元素68。
注意如何取到第i个元素,在插入过程中注意溢出情况以及数组的下标与位序
本程序实现的是在第i个元素之前插入新的元素(顺序表中元素的次序)的区别。*/
#include <iostream>
using namespace std;
#define MAXSIZE 100
#define OVERFLOW -2
#define OK 1
#define ERROR
0
typedef int Status;
typedef int elemtype;
typedef struct
{
elemtype vec[MAXSIZE];
int length;
}sqList;
Status initList(sqList &L,int k)//线性表的初始化
{
int i;
L.length=k;//!
cout<<"input the List:"<<endl;
for(i=0;i<k;i++)
{
cin>>L.vec[i];
}
return OK;
}
int insert(sqList &L,int i,int x)//线性表的插入 //记得要加&
{
int j;
if(L.length>=MAXSIZE)
{
cout<<"the List is OVERFLOW."<<endl;
return ERROR;
}
else if((i<1)||(i>L.length+1))
{
cout<<"position is not correct."<<endl;
return ERROR;
}
else
{
cout<<"input the List:";
for(j=L.length-1;j>=i-1;j--)
{
L.vec[j+1]=L.vec[j];
}
L.vec[i]=x;
L.length++;
}
return OK;
}
int main()
{
int i,n,x;
sqList la;
cout<<"iuput the the length of List:";//输入表的长度
cin>>n;
initList(la,n);
cout<<"iuput the insert location:";
cin>>i;
cout<<"iuput the insert number:";
cin>>x;
if(insert(la,i,x))//输出插入后线性表的长度和数据
{
cout<<"the new List's length is:"<<la.length<<endl;
cout<<"the new List's data is:"<<endl;
for(i=0;i<la.length;i++)
cout<<la.vec[i]<<" ";
}
else
{
cout<<"can't insert the data!"<<endl;
}
return 0;
}
#include<iostream>
using namespace std;
//#include"initlist.h"
#define MAXSIZE
1024
//#define
OVERFLOW
0
#define
ERROR
0
#define
OK
1
#define MAXSIZE
1024
typedef
int
elemtype;
/*
线性表中存放整型元素
*/
typedef struct
//结构定义头文件initlist.h
{ elemtype vec[MAXSIZE];
int len;
/*
顺序表的长度
*/
}sqlist;
int initlist(sqlist *L,int k)
{
int i;
printf("Input the list:");
for( i=0;i<k;i++)
scanf("%d", &L->vec[i]);//cin>>L->vec[i];同效,注意输入时地址"&"
return OK;
}
/*----------------------------------------------*/
int insert(sqlist *L,int i,int x)
//插入运算,将值为x的元素插入到第i个元素之前
{ int j;
if((*L).len>=MAXSIZE)
{
printf("the list is overflown");
return ERROR;
}
else if((i<1)||(i>(*L).len+1))
{
printf("position is not corrent.n");
return ERROR;
}
else{ for(j=(*L).len-1;j>=i-1;j--)
//L->len
(*L).vec[j+1]=(*L).vec[j];
//元素后移
(*L).vec[i]=x;
//插入元素区别:i-1
(*L). len++;
//表长度增加1
return OK;
}
}
int main()
{
int n,i,x;
sqlist *L,a;
printf("n Input the length of the list L:n");
scanf("%d",&n);
//输入表长度
L=&a;
L->len=n;
initlist(L,n);
printf("ninput the insert location:n");
scanf("%d",&i);
printf("ninput the insert data:n");
scanf("%d",&x);
if(insert(L,i,x))
{
printf("The length of the new list is:%dn ",L->len);
printf("Output the new list's data:n");
for(i=0;i<L->len;i++)
printf("%dn", L->vec[i]);
}
else
printf("can't insert the data!n");
system("pause");
return 0;
}
(1)本程序实现的是在第i个元素之前插入新的元素,如何在第i个元素之后插入新元素。
(2)若main主函数中少了语句L->len=n ,会出现什么结果
最后
以上就是超级含羞草为你收集整理的数据结构——线性表的插入的全部内容,希望文章能够帮你解决数据结构——线性表的插入所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复