注册 登录
编程论坛 C++教室

线性表小问题

孤魂居士 发布于 2007-11-07 21:37, 479 次点击

想问下兄弟们 这个线性表算法的主函数怎么写 功能《插入》
我写了几遍总是有问题 具体主函数就不写上来了 怕大家笑话 谢谢各位啦
#include <iostream>
using namespace std;
const int n0=100;
typedef int datatype;
struct sqlist{
datatype v[n0+1];
int n;
};
void ins ( sqlist &L,int i,datatype x )
{
int j;
if(i>L.n||(i<0))
cout<<"参数错";
else if(L.n==n0)
cout<<"溢出";
else{
for(j=L.n;j>i;j--)
L.v[j+1]=L.v[j];
L.v[i+1]=x;
L.n++;
}
}

6 回复
#2
孤魂居士2007-11-07 22:05
无限老大  飞燕姐  你们都去哪里溜达去了
#3
yaiby2007-11-07 22:24

datatype v[n0+1];
在i位置插入数据后,后面的数据都要向后顺移一位。

#4
aipb20072007-11-07 22:43

else{
for(j=L.n;j>i;j--)
L.v[j]=L.v[j-1];

L.v[i]=x;
L.n++;
}
这样试试看,因为不知道你其他函数是怎样实现的

没什么问题,就是多注意下 下标对应(从0开始) ,你可以取实际的值去试。
#5
孤魂居士2007-11-08 12:02

还是实现不了 大哥们还是 帮帮我


#include <iostream>
using namespace std;
const int n0=100;
typedef int datatype;
struct sqlist{
datatype v[n0+1];
int n;
};
void ins ( sqlist &L,int i,datatype x )
{
int j;
if(i>L.n||(i<0))
cout<<"参数错";
else if(L.n==n0)
cout<<"溢出";
else{
for(j=L.n;j>i;j--)
L.v[j]=L.v[j-1];

L.v[i]=x;
L.n++;
}

}
void main()
{
sqlist s;
s.n = 0;
ins(s,0,1); //代真实数值实现算法

cout<<L<<endl; //打印这个已经插好了的连表
}

#6
aipb20072007-11-08 12:25
cout<<L<<endl; //打印这个已经插好了的连表

什么意思, 你不该有这样的错误哦!

void print(const sqlist &l){ //增加一个打印函数
for (int i = 0;i < l.n;++i)
cout << l.v[i] << " ";
cout << endl;
}

print(s); //打印这个已经插好了的连表
#7
孤魂居士2007-11-08 12:32
以下是引用aipb2007在2007-11-8 12:25:02的发言:
cout<<L<<endl; //打印这个已经插好了的连表

什么意思, 你不该有这样的错误哦!

void print(const sqlist &l){ //增加一个打印函数
for (int i = 0;i < l.n;++i)
cout << l.v[i] << " ";
cout << endl;
}

print(s); //打印这个已经插好了的连表

搞糊涂了```
谢谢无限老大了
以后我会认真学习数据结的 不会出现这样的问题了``

1