问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于大学学的数据结构链栈的问题

发布网友 发布时间:2022-04-26 14:59

我来回答

2个回答

热心网友 时间:2022-05-04 21:17

#include<iostream>
using namespace std;
#define max 100//最大表长
typedef char datatype;//假设表中元素为char型
typedef struct{//存储结构
int last;//尾元下标
datatype data[max];//顺序表
}seqlist;
seqlist init(seqlist t){//初始化
t.last=-1;//置空表
return t;
}
void out(seqlist t){//输出
int i;cout<<'(';
for(i=0;i<=t.last;i++)
cout<<t.data[i]<<',';
if(t.last>-1)cout<<'\b';//退格到多余的逗号
cout<<')';
}//输出形式为:(a1,a2,…,an)
int len(seqlist t){//求表长
return t.last+1;
}
seqlist ins(seqlist t,int i,datatype x){//插入
int j;
if(t.last==max-1||i<1||i>t.last+2){
cout<<"\n表满或位置错!\n";exit(0);
}
for(j=++t.last;j>=i;j--)
t.data[j]=t.data[j-1];//后移数据
t.data[i-1]=x;//插入
return t;
}
seqlist del(seqlist t,int i){//删除
int j;
if(i<1||i>t.last+1){
cout<<"\n无此位置!\n"; exit(0);
}
for(j=i;j<=t.last;j++)
t.data[j-1]=t.data[j];//前移数据
t.last--;//修正尾元下标
return t;
}
datatype get(seqlist t,int i){//取元素
if(i<1||i>t.last+1){
cout<<"\n位置错!\n";exit(0);
}
return t.data[i-1];
}
int search(seqlist t,datatype x){//查找
int i;
for(i=t.last;i>=0&&t.data[i]!=x;i--);
return i+1;
}
seqlist replace(seqlist t,int i,datatype x){//替换
if(i<1||i>t.last+1){
cout<<"\n位置错!\n";exit(0);
}
t.data[i-1]=x;
return t;
}
seqlist copy(seqlist t){//复制
return t;
}
seqlist clear(seqlist t){//清空
t.last=-1;
return t;
}
void main(){//测试
seqlist t=init(t);//或seqlist t={-1}
cout<<"t=";out(t);
cout<<",\t表长="<<len(t);//或t.last+1
cout<<"\n\n用插入生成表:(a,b,c)";
t=ins(t,1,'a');t=ins(t,2,'c');t=ins(t,2,'b');
cout<<"\nt=";out(t);
cout<<",\t表长="<<len(t);
int i,n=len(t);
cout<<"\n\n表中元素依次为:\n";
for(i=1;i<=n;i++)
cout<<get(t,i)<<' ';//或t.data[i-1]
cout<<"\n\n值为a,b,c,e的元素序号为:\n";
cout<<search(t,'a')<<' '<<search(t,'b')<<' ';
cout<<search(t,'c')<<' '<<search(t,'e');
cout<<"\n\n把表t复制表s:";
seqlist s;
s=copy(t);//或s=t
cout<<"\ns=";out(s);
cout<<"\n\n把表t删空:";
t=del(t,2);t=del(t,2);t=del(t,1);
cout<<"\nt=";out(t);
cout<<"\n\n把表s替换为:(d,e,f)";
s=replace(s,1,'d');s=replace(s,2,'e');s=replace(s,3,'f');
cout<<"\ns=";out(s);
cout<<"\n\n清空表s:";
s=clear(s);//或s.last=-1
cout<<"\ns=";out(s);
cout<<endl;
}

完了 看吧。

热心网友 时间:2022-05-04 22:35

你的while循环写错了,你想借助S遍历,但是循环条件用的还是top,而top在循环内部没有修改,所以就进入死循环了,应该这么改:
while(S!=NULL) //用S
{
printf("%d,\n",S->data);
S=S->next; //S要修改
}

还有,print函数应该是不想修改链栈的吧,只是读取。所以参数就不要用a的地址了,直接用a传递就行了,保证函数体内不会意外修改a。函数参数要做相应的修改。
像这样:都不用额外借助一个S了。
void print(coffee *top)
{
top=top->next;
while(top!=NULL)
{
printf("%d,\n",top->data);
top=top->next; //top要修改
}
}
用print(a);调用就好了。

有问题Hi联系。
追问我下面是用顺序表举例的,具体问题是链栈,存储结构是类(数据元素,后继指针)附加头结点,参数传递方式是当前对象,基本操作(成员函数)
要求写出操作,逻辑结构,存储结构的函数,基本操作的函数,设计要求,源程序,和测试

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何分别真金和仿金首饰 怎样区分真金和仿金首饰呢 小学生新年晚会主持人的串词!!(不要太多)急 大大后天就需要了!!!_百度... 周年晚会策划公司 奥格瑞玛传送门大厅在哪 奥格瑞玛传送门大厅怎么走 锻炼颈椎的几个动作 水多久能结冰 冰能在多长时间内形成 请问水低于0度会结冰吗? 如何防止脱发严重 嘴唇上有黑印用蜜蜡和棉线去除了胡须 求编程高手用c语言编写链栈完整源代码 聚合酶链反应的反应体系 链条规格名称38.4VB是什么含义? 如何用C语言创建一个链栈,并进行操作 C语言数据结构实现链栈的入栈、出栈、删除与插入 “不可约的马尔可夫链”通俗的将是什么意思? 苹果手机怎么下载安装平安app? 怎么命名碳原子数相同的碳链?要举例,并给分子结构图 区块链是什么意思?用通俗易懂的语言,,谢谢 平安app退保的步骤 支付宝里余额有一笔备用1000元免费用一个月可以借用吗? 农业银行消费明细怎么查询 如何让女生自动给你发信息? 怎么才能让女生对自己敞开心扉呢? 怎么才能让一个女生快速爱上你? 和女孩怎么聊天才能让她喜欢上你 华为手机实用性价比高排名 怎么让女生对你有好感? 如何添加一个不怎么爱加陌生人微信心仪女生的微信,让她接受我。验证的时候我该说什么才能更有说服力。 怎么才能从屌丝变男神?让女生主动来加你微信。 关于大学学的数据结构链栈的问题·,存储结构是类(数据元素,后继指针)附加头结点,参数传递方式是当前对象 什么是iptables规则链? 如何用c语言实现单链表的逆置 速冻饺子怎么做煎饺,你真的不知道 在什么地方可以找到更多好看的图片,高清的 在哪可以下载点好看的图片? 超喜欢龙族幻想绘梨衣,哪里可以下载绘梨衣的高清壁纸? 谁能给个下载高清图片的地址? SD卡提示格式化错误是什么意思?还能用吗? 内存卡格式化错了怎么修复 你好,我的照相机存储卡显示存储卡错误,格式化时显示格式化错误怎么回事 照相机内存卡链接电脑出现格式化错误,要怎办请速回... 脸小,额头宽,头大的女生适合什么样的发型 脸小但额头大的女生适合什么发型? 我女生脸小额头大应该弄什么发型好? 大额头脸小女生适合什么发型 小脸女生时尚发型 眼睛小,额头大,脸小的女生适合什么样的发型 脸小,又圆,额头有点大的女生什么发型好看? 额头高,脸小,头小的女生适合什么发型? 额头小脸大适合什么发型