| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1217 人关注过本帖
标题:链栈的定义为什么要分两步,一次不可以吗
取消只看楼主 加入收藏
wshyj18
Rank: 1
等 级:新手上路
帖 子:124
专家分:0
注 册:2007-5-14
收藏
 问题点数:0 回复次数:0 
链栈的定义为什么要分两步,一次不可以吗
在看链栈的时候。定义时要这样
typedef struct stacknode{
datatype data
struct stacknode *next
}stacknode;

typedef struct {
stacknode *top;
}linkstack;
可是我直接这样不行吗
typedef struct stacknode{
datatype data
struct stacknode *next
}stacknode;
把它当作一个单链表,下面是我写的它的基本操作,有一个错误,大家帮忙改改
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct node/*建一个表的类型*/
{
    int date;
    struct node *next;
}lstuct;
void Init(lstuct *p)/*置空啊,没办法,我只能这样*/
{
 p=NULL;
}
void push(lstuct *p,int m)
{
 lstuct *s;
 s=(lstuct*)malloc(sizeof(lstuct));/*为入的这个数分配内存空间*/
 if(!s)
     printf("mei you fen pei hao a");
      s->next=NULL;
      s->date=m;
 else
     if(p==NULL)
     p=s;
     else
    {
         s->next=p;
         p=s;

    }   
}
void pop(lstuct *p)
{
 lstuct *s=p;
 if(p==NULL)
     printf("不行啊,没元素,怎么删啊");/*13.41*/
 else
    {
     p=p->next;
     free(s);
   }
}
void display(lstuct *p)
{
 if(p==NULL)
     printf("不行啊,你输不出来啊,一个数都没有,怎么输");
 else
     while(p!=NULL)
    {
     printf("%d",p->date);
     p=p->next;
    }
}
void main()
{
 lstuct *p;
 p=(lstuct*)malloc(sizeof(lstuct));
 Init(p);
 push(p,3);
 push(p,4);
 push(p,5);
 printf("你写入的数是:");
 display(p);
 pop(p);
 printf("\n你出来后的数为:");
 display(p);
}
搜索更多相关主题的帖子: 链栈 stacknode struct 定义 typedef 
2007-12-28 14:42
快速回复:链栈的定义为什么要分两步,一次不可以吗
数据加载中...
 
   



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

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