数据结构基本问题

fyz2841585 2010-07-20 11:28:11
没有语法错误,但是运行不了,我不想用->,只想用.的方式,代码如下:请高手分析!!
#include<iostream>
using namespace std;
typedef struct {
int *top;
int *base;
int stacksize;
}sqstack;

void initstack(sqstack *s)
{
s->base=(int*)malloc(150*sizeof(int));
s->stacksize=10;
s->top=s->base;
}
void push(sqstack *s,int e)
{
*(s->top)=e;
s->top++;
}
void pop(sqstack *s,int *e)
{
s->top--;
*e=*(s->top);

}
void main()
{
int i,j;
sqstack *s;
initstack(s);
for(i=0;i<5;i++)
push(s,i);
for(i=0;i<5;i++)
{
pop(s,&j);
cout<<j<<endl;
}
}
...全文
96 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
走好每一步 2010-07-20
  • 打赏
  • 举报
回复
sqstack *p; initstack(sqstack *q) 这样写法不对的,楼主要弄清楚指针与记录(结构体)的区别,指针只是令你间接操作记录,记录才是真正可以记东西的地方(一般用记录中的指针指向数据库,存放某些状态,文件数目等)。你申请了指向记录的指针,却没为其开辟对应的记录。那么把一个随机记录地址值(指阵没初始化)传进函数中,有什么用呢?你没有记录可操作。
pengzhixi 2010-07-20
  • 打赏
  • 举报
回复
void initstack(sqstack *&s)
fyz2841585 2010-07-20
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;
typedef struct {
int *top;
int *base;
int stacksize;
}sqstack;

void initstack(sqstack &s)
{
s.base=(int*)malloc(10*sizeof(int));
s.stacksize=100;
s.top=s.base;
}
void push(sqstack &s,int e)
{
*(s.top)=e;
s.top++;
}
void pop(sqstack &s,int *e)
{
s.top--;
*e=*(s.top);

}
void main()
{
int i,j;
sqstack s;//我并没有使用new
initstack(s);
for(i=0;i<5;i++)
push(s,i);
for(i=0;i<5;i++)
{
pop(s,&j);
cout<<j<<endl;
}
}
liutengfeigo 2010-07-20
  • 打赏
  • 举报
回复
我不想用->,只想用.的方式
就引用撒
cnlm2 2010-07-20
  • 打赏
  • 举报
回复
int i,j;
sqstack *s;
initstack(s);

sqstack类型指针没初始化
赵4老师 2010-07-20
  • 打赏
  • 举报
回复
a->b
等价于
(*a).b
SLSnake 2010-07-20
  • 打赏
  • 举报
回复
你想要传递结构内的数据必须要用指针,用指针就要用->
你用.的话,你数据在函数里改变之后是传不出来的
小楫轻舟 2010-07-20
  • 打赏
  • 举报
回复

#include<iostream>
using namespace std;
typedef struct
{
int *top;
int *base;
int stacksize;
}sqstack;

void initstack(sqstack *s)
{
s->base=(int*)malloc(150*sizeof(int));
s->stacksize=10;
s->top=s->base;
}
void push(sqstack *s,int e)
{
*(s->top)=e;
s->top++;
}
void pop(sqstack *s,int *e)
{
s->top--;
*e=*(s->top);

}
void main()
{
int i,j;
sqstack *s = new sqstack; //为s分配空间,和->还是.没关系
initstack(s);
for(i=0;i<5;i++)
push(s,i);
for(i=0;i<5;i++)
{
pop(s,&j);
cout<<j<<endl;
}
}
taodm 2010-07-20
  • 打赏
  • 举报
回复
楼主学的真是C++?学到了“引用”没有?
昨日,11.19,最新整理了,第61-80题,现在公布上传。 另加上之前公布的第1-60 题,在此做一次汇总上传,以飨各位。 可以这么说,绝大部分的面试题,都是这100 道题系列的翻版, 此微软等公司数据结构+算法面试100 题系列,是极具代表性的经典面试题。 而,对你更重要的是,我自个还提供了答案下载,提供思路,呵。 所以,这份资料+答案,在网上是独一无二的。 ------------------------------------ 整理资源,下载地址: 答案系列: 1.[最新答案V0.3 版]微软等数据结构+算法面试100 题[第21-40 题答案] http://download.csdn.net/source/2832862 2.[答案V0.2 版]精选微软数据结构+算法面试100 题[前20 题]--修正 http://download.csdn.net/source/2813890 //此份答案是针对最初的V0.1 版本,进行的校正与修正。 3.[答案V0.1 版]精选微软数据结构+算法面试100 题[前25 题] http://download.csdn.net/source/2796735 题目系列: 4.[第一部分]精选微软等公司数据结构+算法经典面试100 题[1-40 题] http://download.csdn.net/source/2778852 5.[第1 题-60 题汇总]微软等数据结构+算法面试100 题 http://download.csdn.net/source/2826690 更多资源,下载地址: http://v_july_v.download.csdn.net/ 若你对以上任何题目或任何答案,有任何问题,欢迎联系我: My E-mail: zhoulei0907@yahoo.cn ------------- 作者声明: 本人July 对以上公布的所有任何题目或资源享有版权。转载以上公布的任何一题, 或上传百度文库资源,请注明出处,及作者我本人。 向你的厚道致敬。谢谢。 ---July、2010 年11 月20 日。 ------------------------------------------------------ 各位,若对以上100题任何一道,或对已上传的任何一题的答案, 有任何问题,请把你的思路、想法,回复到此帖子上, 微软等100题系列,永久维护地址(2010年11.26日): http://topic.csdn.net/u/20101126/10/b4f12a00-6280-492f-b785-cb6835a63dc9.html
第一章 走进linux 1.1 GNU与Linux的成长 1.2 Linux的开发模式和运作机制 1.3走进Linux内核 1.4 分析Linux内核的意义 1.5 Linux内核结构 1.6 Linux内核源代码 1.7 Linux内核源代码分析工具 第二章 Linux运行的硬件基础 2.1 i386的寄存器 2.2 内存地址 2.3 段机制和描述符 2.4 分页机制 2.5 Linux中的分页机制 2.6 Linux中的汇编语言 第三章中断机制 3.1 中断基本知识 3.2中断描述符表的初始化 3.3异常处理 3.4 中断处理 3.5中断的后半部分处理机制 第四章 进程描述 4.1 进程和程序(Process and Program) 4.2 Linux中的进程概述 4.3 task_struct结构描述 4.4 task_struct结构在内存中的存放 4.5 进程组织的方式 4.6 内核线程 4.7 进程的权能 4.8 内核同步 第五章进程调度 5.1 Linux时间系统 5.2 时钟中断 5.3 Linux的调度程序-Schedule( ) 5.4 进程切换 第六章 Linux内存管理 6.1 Linux的内存管理概述 6.2 Linux内存管理的初始化 6.3 内存的分配和回收 6.4 地址映射机制 6.5 请页机制 6.6 交换机制 6.7 缓存和刷新机制 6.8 进程的创建和执行 第七章 进程间通信 7.1 管道 7.2 信号(signal) 7.3 System V 的IPC机制 第八章 虚拟文件系统 8.1 概述 8.2 VFS中的数据结构 8.3 高速缓存 8.4 文件系统的注册、安装与拆卸 8.5 限额机制 8.6 具体文件系统举例 8.7 文件系统的系统调用 8 .8 Linux2.4文件系统的移植问题 第九章 Ext2文件系统 9.1 基本概念 9.2 Ext2的磁盘布局和数据结构 9.3 文件的访问权限和安全 9.4 链接文件 9.5 分配策略 第十章 模块机制 10.1 概述 10.2 实现机制 10.3 模块的装入和卸载 10.4 内核版本 10.5 编写内核模块 第十一章 设备驱动程序 11.1 概述 11.2 设备驱动基础 11.3 块设备驱动程序 11.4 字符设备驱动程序 第十二章 网络 12.1 概述 12.2 网络协议 12.3 套接字(socket) 12.4 套接字缓冲区(sk_buff) 12.5 网络设备接口 第十三章 启动系统 13.1 初始化流程 13.2 初始化的任务 13.3 Linux 的Boot Loarder 13.4 进入操作系统 13.5 main.c中的初始化 13.6 建立init进程 附录: 1 Linux 2.4内核API 2.1 驱动程序的基本函数 2.2 双向循环链表的操作 2.3 基本C库函数 2.4 Linux内存管理中Slab缓冲区 2.5 Linux中的VFS 2.6 Linux的连网 2.7 网络设备支持 2.8 模块支持 2.9 硬件接口 2.10 块设备 2.11 USB 设备

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧