建立顺序表,实现顺序表的遍历,在顺序表中查找关键字为e的元素(c语言编写) 20

刚学的数据结构希望有注释,书上写的算法不太懂,书是的是严版的,最好能用书上的例子讲解一下,谢谢... 刚学的数据结构希望有注释,书上写的算法不太懂,书是的是严版的,最好能用书上的例子讲解一下,谢谢 展开
 我来答
帽子狗
推荐于2017-11-24 · TA获得超过942个赞
知道小有建树答主
回答量:611
采纳率:50%
帮助的人:551万
展开全部

楼主我大二 也刚上数据结构耶

这是我上实验课的时候用链表写的

还没交老师看  功能还差一个 可能还bug

楼主你看看~~

/*1.编写程序实现顺序表的下列基本操作:
 (1)初始化顺序表La--模板已提供参考
 (2)将La置为空表
 (3)销毁La
 (4)在La中插入一个新的元素--模板已提供参考
 (5)删除La中的某一元素--模板已提供参考
 (6)在La中查找某元素,若找到,则返回它在La中第一次出现的位置,否则返回0
 (7)打印输出La中的元素值--模板已提供参考*/

#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;

template<typename type>//定义元素 
struct lian
{
type a;
struct lian *next;
};

template<typename type>//定义表 
class biao
{
public:
lian<type>*tou;//头指针 
lian<type>*p;//尾部指针
lian<type>*d;//随机指针 
int n;//当前节数 
void ChuShiHua(type M)//初始化 
{
p=tou=(lian<type>*)malloc(sizeof(lian<type>));
p->a=M;
tou->next=NULL;
n=1;
}
void XiaoHui()//销毁 
{
int i;
d=tou;
for(i=1;i<=n;++i)
{
d=tou;
tou=tou->next;
free(d);
}
d=p=tou=NULL;
n=0;
}
bool ChaRu(type M)//尾部元素插入 成功返回true 失败返回false
{
p->next=(lian<type>*)malloc(sizeof(lian<type>));
p->next->a=M;
if(!p)
{
cout<<"插入失败."<<endl;
return false;
}
++n;
p=p->next;
p->next=NULL;
return true;
}
bool ChaRu(type M,int x)//随机位置元素插入 成功返回true 失败返回false 
{
if(x>n)
{
cout<<"数据有误,插入失败."<<endl;
return false;
}
int i;
lian<type>*cha=(lian<type>*)malloc(sizeof(lian<type>));
if(!cha)
{
cout<<"插入失败."<<endl;
return false;
}
cha->a=M;
for(d=tou,i=1;i<x;++i)
d=d->next;
cha->next=d->next;
d->next=cha;
++n;
return true;
}
void ShanChu(int x)//删除元素 不能删除表头 
{
if(x>n||x==1)
{
cout<<"数据有误,插入失败."<<endl;
return;
}
int i;
lian<type>*del;
for(d=tou,i=1;i<x-1;++i)
d=d->next;
del=d->next;
d->next=del->next;
free(del);
del=NULL;
--n;
}
int ZhaoYuanShu(type a)//查找 
{
int i;
for(d=tou,i=1;i<=n;++i,d=d->next)
{
if(d->a==a)
return i;
}
return 0;
}
void ShuChu()//输出
{
for(d=tou;d!=NULL;d=d->next)
{
cout<<d->a<<" ";
}
cout<<endl;
}
};
更多追问追答
追问
运行不了,还有我们学的怎么和你们不一样,我们好像简单一点
追答

肯定运行不了啊 这就是个类  没有主函数 ~~

下面是主函数 粘贴在上面代码下面

实现你的两个功能  遍历输出和查找

楼主我们的书是紫色封面的那种 

不过这个不是按教材搞的 老师要我们用模版实现 

才写得复杂  可以直接写整形类


int main()
{
int i;
biao<int> x;//定义一个int链表
x.ChuShiHua(1);//先初始化 设置表头数据为1 
for(i=1;i<10;x.ChaRu(++i));//先顺序插2~10
x.ShuChu();//遍历输出
i=5; //设置i为5 下面找5 
cout<<"第一个"<<i<<"出现在第"<<x.ZhaoYuanShu(i)<<"位"<<endl;
x.ChaRu(11,3);//把11插到第3位
x.ShuChu();//遍历输出
i=11;//设置i为11 下面找11 
cout<<"第一个"<<i<<"出现在第"<<x.ZhaoYuanShu(i)<<"位"<<endl;
x.XiaoHui();//最后销毁 
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式