数据结构线性表基本操作
我的代码在这里,插入的这一段有问题,不知道函数哪里错了,求指导#include<iostream>#include<cstdio>#include<cstdlib>#de...
我的代码在这里,插入的这一段有问题,不知道函数哪里错了,求指导
#include <iostream>
#include <cstdio>
#include <cstdlib>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
using namespace std;
typedef int Elemtype;
typedef struct
{
Elemtype *elem;
int length;
int listsize;
} SqList;
int InitList_Sq(SqList &L)//L在下面发生变化,故用引用
//构造一个新的线性表
{
L.elem=(Elemtype *)malloc(LIST_INIT_SIZE*sizeof(Elemtype));
if(!L.elem)
exit(OVERFLOW);
L.length=0;//空表长度为0
L.listsize=LIST_INIT_SIZE;//初始存储容量
return OK;
}
int ListInsert_Sq(SqList &L,int i,Elemtype e)
//在顺序表L中的第i个位置插入新的元素e
//i的合法值为1<=i<=ListLength_Sq(L)+1
{
Elemtype * newbase;
Elemtype* p;
Elemtype* q;
if(i<1||i>L.length+1)//判断i值是否合法
return ERROR;
if(L.length>=L.listsize)//增加分配空间
{
newbase=(Elemtype*)realloc(L.elem,
(L.listsize+LISTINCREMENT)*sizeof(Elemtype));
if(!newbase)//存储分配失败
exit(OVERFLOW);
L.elem=newbase;//新基址
L.listsize+=LISTINCREMENT;//增加存储容量
}
/*for(int j=L.length;j>=i;j--)//元素右移
L.elem[j+1]=L.elem[j];
L.elem[i]=e;//插入e
L.length++;//表长增加
return OK;*/
q=&(L.elem[i-1]);//指针操作
for(p=&(L.elem[L.length-1]); p>=q; --p)
{
*(p+1)=*p;
}
*q=e;
++L.length;
return OK;
}
int main()
{
int i,n,x,k;
SqList La;
cout<<"请输入线性表La的长度:";
cin>>n;
cout<<"请输入线性表La中的元素:";
InitList_Sq(La);
for(i=0; i<n; i++)
{
cin>>La.elem[i];
}
cout<<"请输入要插入到线性表La中的数字x和插入的位置k:";
cin>>x>>k;
ListInsert_Sq(La,k,x);
cout<<"线性表La=";
for(i=0; i<n+1; i++)
cout<<La.elem[i]<<" ";
return 0;
} 展开
#include <iostream>
#include <cstdio>
#include <cstdlib>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
using namespace std;
typedef int Elemtype;
typedef struct
{
Elemtype *elem;
int length;
int listsize;
} SqList;
int InitList_Sq(SqList &L)//L在下面发生变化,故用引用
//构造一个新的线性表
{
L.elem=(Elemtype *)malloc(LIST_INIT_SIZE*sizeof(Elemtype));
if(!L.elem)
exit(OVERFLOW);
L.length=0;//空表长度为0
L.listsize=LIST_INIT_SIZE;//初始存储容量
return OK;
}
int ListInsert_Sq(SqList &L,int i,Elemtype e)
//在顺序表L中的第i个位置插入新的元素e
//i的合法值为1<=i<=ListLength_Sq(L)+1
{
Elemtype * newbase;
Elemtype* p;
Elemtype* q;
if(i<1||i>L.length+1)//判断i值是否合法
return ERROR;
if(L.length>=L.listsize)//增加分配空间
{
newbase=(Elemtype*)realloc(L.elem,
(L.listsize+LISTINCREMENT)*sizeof(Elemtype));
if(!newbase)//存储分配失败
exit(OVERFLOW);
L.elem=newbase;//新基址
L.listsize+=LISTINCREMENT;//增加存储容量
}
/*for(int j=L.length;j>=i;j--)//元素右移
L.elem[j+1]=L.elem[j];
L.elem[i]=e;//插入e
L.length++;//表长增加
return OK;*/
q=&(L.elem[i-1]);//指针操作
for(p=&(L.elem[L.length-1]); p>=q; --p)
{
*(p+1)=*p;
}
*q=e;
++L.length;
return OK;
}
int main()
{
int i,n,x,k;
SqList La;
cout<<"请输入线性表La的长度:";
cin>>n;
cout<<"请输入线性表La中的元素:";
InitList_Sq(La);
for(i=0; i<n; i++)
{
cin>>La.elem[i];
}
cout<<"请输入要插入到线性表La中的数字x和插入的位置k:";
cin>>x>>k;
ListInsert_Sq(La,k,x);
cout<<"线性表La=";
for(i=0; i<n+1; i++)
cout<<La.elem[i]<<" ";
return 0;
} 展开
展开全部
#include <iostream>
#include <cstdio>
#include <cstdlib>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
using namespace std;
typedef int Elemtype;
typedef struct
{
Elemtype *elem;
int length;
int listsize;
} SqList;
int InitList_Sq(SqList &L)//L在下面发生变化,故用引用
//构造一个新的线性表
{
L.elem=(Elemtype *)malloc(LIST_INIT_SIZE*sizeof(Elemtype));
if(!L.elem)
exit(OVERFLOW);
L.length=0;//空表长度为0
L.listsize=LIST_INIT_SIZE;//初始存储容量
return OK;
}
int ListInsert_Sq(SqList &L,int i,Elemtype e)
//在顺序表L中的第i个位置插入新的元素e
//i的合法值为1<=i<=ListLength_Sq(L)+1
{
Elemtype * newbase;
Elemtype* p;
Elemtype* q;
if(i<1||i>L.length+1)//判断i值是否合法
return ERROR;
if(L.length>=L.listsize)//增加分配空间
{
newbase=(Elemtype*)realloc(L.elem,
(L.listsize+LISTINCREMENT)*sizeof(Elemtype));
if(!newbase)//存储分配失败
exit(OVERFLOW);
L.elem=newbase;//新基址
L.listsize+=LISTINCREMENT;//增加存储容量
}
/*for(int j=L.length;j>=i;j--)//元素右移
L.elem[j+1]=L.elem[j];
L.elem[i]=e;//插入e
L.length++;//表长增加
return OK;*/
q=&(L.elem[i-1]);//指针操作
for(p=&(L.elem[L.length-1]); p>=q; --p)
{
*(p+1)=*p;
}
*q=e;
++L.length;
return OK;
}
int main()
{
int i,n,x,k;
SqList La;
cout<<"请输入线性表La的长度:";
cin>>n;
cout<<"请输入线性表La中的元素:";
InitList_Sq(La);
for(i=0; i<n; i++)
{
cin>>La.elem[i];
La.length++; //如果不加这句,你要让La.length=n;
}
cout<<"请输入要插入到线性表La中的数字x和插入的位置k:";
cin>>x>>k;
ListInsert_Sq(La,k,x);
cout<<"线性表La=";
for(i=0; i<La.length; i++)//你的是i<n你插入元素的时候n没有变,不,
cout<<La.elem[i]<<" ";
return 0;
}
你自己看看
#include <cstdio>
#include <cstdlib>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
using namespace std;
typedef int Elemtype;
typedef struct
{
Elemtype *elem;
int length;
int listsize;
} SqList;
int InitList_Sq(SqList &L)//L在下面发生变化,故用引用
//构造一个新的线性表
{
L.elem=(Elemtype *)malloc(LIST_INIT_SIZE*sizeof(Elemtype));
if(!L.elem)
exit(OVERFLOW);
L.length=0;//空表长度为0
L.listsize=LIST_INIT_SIZE;//初始存储容量
return OK;
}
int ListInsert_Sq(SqList &L,int i,Elemtype e)
//在顺序表L中的第i个位置插入新的元素e
//i的合法值为1<=i<=ListLength_Sq(L)+1
{
Elemtype * newbase;
Elemtype* p;
Elemtype* q;
if(i<1||i>L.length+1)//判断i值是否合法
return ERROR;
if(L.length>=L.listsize)//增加分配空间
{
newbase=(Elemtype*)realloc(L.elem,
(L.listsize+LISTINCREMENT)*sizeof(Elemtype));
if(!newbase)//存储分配失败
exit(OVERFLOW);
L.elem=newbase;//新基址
L.listsize+=LISTINCREMENT;//增加存储容量
}
/*for(int j=L.length;j>=i;j--)//元素右移
L.elem[j+1]=L.elem[j];
L.elem[i]=e;//插入e
L.length++;//表长增加
return OK;*/
q=&(L.elem[i-1]);//指针操作
for(p=&(L.elem[L.length-1]); p>=q; --p)
{
*(p+1)=*p;
}
*q=e;
++L.length;
return OK;
}
int main()
{
int i,n,x,k;
SqList La;
cout<<"请输入线性表La的长度:";
cin>>n;
cout<<"请输入线性表La中的元素:";
InitList_Sq(La);
for(i=0; i<n; i++)
{
cin>>La.elem[i];
La.length++; //如果不加这句,你要让La.length=n;
}
cout<<"请输入要插入到线性表La中的数字x和插入的位置k:";
cin>>x>>k;
ListInsert_Sq(La,k,x);
cout<<"线性表La=";
for(i=0; i<La.length; i++)//你的是i<n你插入元素的时候n没有变,不,
cout<<La.elem[i]<<" ";
return 0;
}
你自己看看
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询