| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 696 人关注过本帖
标题:链栈的基本操作、指针实现,能调试不运行
只看楼主 加入收藏
成欢欢
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2013-4-16
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:5 
链栈的基本操作、指针实现,能调试不运行
//此程序较简单,调用函数三个,为(初始化)(入栈)(出栈)。通过循环入栈实现建立栈,循环出栈实现栈的逆序输出。
//问题:调试没错,语法应该没问题,但输入值运行的时候不行,
//本人使用软件为VC++

#include<stdio.h>
#include<stdlib.h>

#define OK 1
#define ERROR 0
 
#define MASIZE  100
typedef int SElemType;
typedef int Status;

typedef struct StackNode{
    SElemType date;
    struct StackNode *next;
}StackNode,*LinkStack;
StackNode *S;

int main()
{
    Status InitStack();         //初始化
    Status Push(SElemType e);   //入栈
    Status Pop(SElemType e);    //出栈
   
    int N,i;
    SElemType X,E;
    InitStack();   //初始化

    printf("输入要建立栈的长度:");   //此处通过入栈实现栈的建立
    scanf("%d",&N);
    printf("空格隔开输入%d个数:",N);
    for(i=0;i<N;i++){
        scanf("%d",&X);
        Push(X);   //入栈
    }

    printf("逆序输出栈:");//此处通过出栈实现栈的逆序输出
    for(i=N;i>0;i++){
        E=Pop(E);   //出栈
        printf("%d",E);
    }
    return 0;
}

Status InitStack()//初始化
{
    S=NULL;
    return OK;
}

Status Push(SElemType e)//入栈
{
    StackNode *p;
    p->date=e;
    p->next=S;
    S=p;
    return OK;
}

Status Pop(SElemType e)//出栈
{
    //StackNode *p;
    if(S==NULL) return ERROR;
    e=S->date;
    //p=S;//此处用来下面释放p,我已将其注释
    S=S->next;
    //delete p;//释放原栈顶指针空间
    return OK;
}
搜索更多相关主题的帖子: next include 
2013-05-04 20:34
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:5 
主要是对指针了解不够

下面是我对指针的一种理解,也许有错吧

在我看来,指针相当于门牌,指针的值就是门牌上面的号码

所谓门牌,就是可以通过号码找到对应房间

一个房间可以有很多门牌,但是号码必然一致,不然就找错了
程序代码:
#include<stdio.h>
int main()
{
    int  a = 5;        //a用来存储 5,相当于 1个房间
    int *p = &a;       //p指向 a,相当于 a的门牌
    int *q = &a;       //q也指向 a
    return 0;
}


一个门牌最多只能指向一个房间(这个就不举例了)

但是有的门牌不一定指向房间,举例两种可能

1.林公路有 5间房子,门牌号分别为 林公路 1号、2号。。。  那么林公路 6号呢?

首先这个门牌是有可能的,先做好门牌,房子还没建好而已,这时候,林公路 6号可以住人么?答案当然是不能。

2.有一块用来做门牌的木板,上面还没有给定门牌号码,这个当然也没法住人了,房子都找不到。。。

解决的方法就是:指定已有房间 或者盖房子
程序代码:
#include<stdio.h>
int main()
{
    int *p;            //例 2,没有门牌号的门牌

    int a;
    p = &a;            //第一种方法

    p = new int;       //第二种方法
    delete p;
    return 0;
}



只是浅谈,有些比喻不够确切,希望不要介意


[fly]存在即是合理[/fly]
2013-05-04 22:29
y1207435881
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:225
专家分:762
注 册:2013-4-30
收藏
得分:15 
#include<stdio.h>
#include<stdlib.h>

#define OK 1
#define ERROR 0

#define MASIZE  100
typedef int SElemType;
typedef int Status;

typedef struct StackNode{
    SElemType date;
    struct StackNode *next;
}StackNode,*LinkStack;
StackNode *S;

int main()
{
    Status InitStack();         //初始化
    Status Push(SElemType e);   //入栈
    Status Pop(SElemType e);    //出栈
   
    int N,i;
    SElemType X,E;
    InitStack();   //初始化

    printf("输入要建立栈的长度:");   //此处通过入栈实现栈的建立
    scanf("%d",&N);
    printf("空格隔开输入%d个数:",N);
    for(i=0;i<N;i++){
        scanf("%d",&X);
        Push(X);   //入栈
    }

    printf("逆序输出栈:");//此处通过出栈实现栈的逆序输出
    for(i=0;i<N;i++){
        E=Pop(N);   //出栈
        printf("%d",E);
    }
    return 0;
}

Status InitStack()//初始化
{
    S=NULL;
    return OK;
}

Status Push(SElemType e)//入栈
{
    StackNode *p;
    p=(LinkStack)malloc(sizeof(LinkStack));
    p->date=e;
    p->next=S;
    S=p;
    return OK;
}

Status Pop(SElemType e)//出栈
{
    //StackNode *p;
    if(S==NULL) return ERROR;
    e=S->date;
    //p=S;//此处用来下面释放p,我已将其注释
    S=S->next;
    //delete p;//释放原栈顶指针空间
    return e;
}
2013-05-04 22:52
y1207435881
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:225
专家分:762
注 册:2013-4-30
收藏
得分:0 
lz你仔细看一下吧,有几处错误,建议初学者别用这些
#define OK 1
#define ERROR 0

#define MASIZE  100
typedef int SElemType;
typedef int Status;
东西。
2013-05-04 22:54
成欢欢
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2013-4-16
收藏
得分:0 
回复 4楼 y1207435881
嗯,谢谢。下次会注意的
2013-05-04 22:56
成欢欢
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2013-4-16
收藏
得分:0 
回复 2楼 azzbcc
原理基本懂,实际操作还要学学
2013-05-04 22:58
快速回复:链栈的基本操作、指针实现,能调试不运行
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018107 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved