数据结构-线性表-怎么在VC++6.0中实现

自学数据结构中,重点:

书上写的程序 应该都能在VC++6.0中实现吧
不然写来干什么 至少我这么认为

可能说得太抽象 那例子来说明吧

例如怎么设计一个程序,cin N个数,生成一个队列,
然后判断队列是否为空,空就继续输入,非空就顺序输出队列中的元素

我在纠结,有些地方转不过弯,请高手指点下

#include<iostream.h>
#include<stdlib.h>
#include<iostream.h>
typedef struct seqlist //定义线性表的顺序存储结构
{
int *elem; //存储空间分配的首地址
int length ; //线性长度
}seqlist;
//此变量可作为线性表数据类型定义线性表
void init(seqlist &l) //线性表的初始化
{
l.elem=new int[20]; //分配存储空间存储线性表中的元素
l.length=0; //空线性表的长度为0
}

void delseqlist(seqlist &l) //销毁建立的线性表
{
delete []l.elem;
l.length=0;
}

void insert(seqlist &l,int i, int x)//元素e插入线性表中的第i个位置上
{
if(i<1||i>l.length+1)
cout<<"i值不合法!"<<endl; //错误处理
for(int j=l.length;j>=i;j--)
l.elem[j+1]=l.elem[j]; //第i个元素及其后的元素依次后移
l.elem[i]=x; //插入新元素于第i个位置上
l.length++; //线性表的长度增1
}

void printout(seqlist &l) //输出线性表当中的所有元素
{
int j;
for(j=1;j<=l.length;j++)
cout<<l.elem[j]<<" ";
}

int llength(seqlist &l) //求线性表的长度
{
return l.length;
}

int locateElem(seqlist &l, int e) //在顺序表L中查找第一个值于e相等的数据元素
{
int i=1;
int *p;
p=l.elem; p++; //p指向线性表中的第一个元素
while (i<=l.length && *p++!=e ) //依次向后进行比较
++i;
if(i<=l.length)
return i;
else
return 0; //返回结果
}

void Delete( seqlist &l,int i,int &e)//此函数删除第i个元素,并将其值用e返回
{
int *p,*q;
if((i<1)||(i>l.length)) cout<<"i值不合法!"<<endl;
p=&(l.elem[i]); //将被删元素送给e
e=*p;
q=l.elem+l.length; //表尾元素的位置
for(++p; p<=q; ++p)
*(p-1)=*p;//被删元素之后的元素前移
l.length--;
}

void invert( seqlist &l,int s,int t) //就地逆置
{
int k;
int w;
for(k=s;k<=(s+t)/2;k++)
{
w=l.elem[k];
l.elem[k]=l.elem[s+t-k];
l.elem[s+t-k]=w;
}
}

void main() //构成完整的源程序并对算法进行测试
{
seqlist l;
int x,a,y,b,j;
init(l); //初始化空线性表l
cout<<"输入线性表的长度:"<<endl;
cin>>a;
cout<<"输入线性表中的所有元素:"<<endl;
for(j=1;j<=a;j++)//通过添加元素使线性表l变为含有若干个元素的线性表
{
cin>> x;
insert(l,j,x);
}
cout<<"线性表为: ";
printout(l);
cout<<endl<<"被删除的元素的位置:";
cin>>y;
Delete(l,y,b);
cout<<endl<<"变化(删除元素)后的线性表为:";
printout(l);
invert(l,1,l.length );
cout<<endl<<"逆置后表为: ";
printout(l);
cout<<"输入要查找的元素:"<<endl;
cin>>x;
cout<<endl;
cout<<x<<" 在线性表中的位置为:(其中0表示x不在线性表中,其他值表示其在线性表中的位置)";
cout<<endl<<locateElem(l,x)<<endl;
}
我以前做的
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-31
一般来说应该都能,但是书上给的是简易的,你得自己补充组合,才能运行,我用的就是VC++6.0,不过我编程时用的是C语言,因为我们没学过C++,不过你如果把程序给出来,并说明那不明白的话,我应该能讲明白,语言很多都是通的。