| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1054 人关注过本帖, 1 人收藏
标题:请教:用C语言写栈
只看楼主 加入收藏
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
update
2010-02-18 15:52
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
update again
2010-02-18 21:26
XKJKingS
Rank: 2
等 级:论坛游民
帖 子:9
专家分:14
注 册:2010-2-18
收藏
得分:0 
用数组来实现 最方便  数组和栈物理存储结构很相似
2010-02-18 22:27
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
以下是引用XKJKingS在2010-2-18 22:27:55的发言:

用数组来实现 最方便  数组和栈物理存储结构很相似



数组的实现空间上限制太大,我的code扩展性最好。
2010-02-18 23:12
XKJKingS
Rank: 2
等 级:论坛游民
帖 子:9
专家分:14
注 册:2010-2-18
收藏
得分:4 

#ifndef _STDIO_H
#include <stdio.h>
#endif
#ifndef _MALLOC_H
#include <malloc.h>
#endif
#define MAX_SIZE 100
static  int* Top = NULL;
static  int* But = NULL;
int XKJCreat( void )
{
  
  But = (int *)malloc( MAX_SIZE );
  if( But == NULL )
  {
    perror( "mem:" );
    return 0;
  }
  Top = But;
  return 1;
}
int XKJPop( void )
{
  if( Top == But )
  {
    printf( "Empty stack" );
    getchar();
    return 0;
  }
  else return *--Top;
}
int XKJPush( int number )
{
  if( (Top - But) >= sizeof(int) * MAX_SIZE)
  {
    printf( "over stack" );
    getchar();
    return 0;
  }
  else *Top++ = number;

  return number;
}
数组实现栈   速度很快(比链表快N倍)CPU内部指令就是这样工作的  唯一缺点就是大小是固定的
2010-02-19 00:02
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
以下是引用XKJKingS在2010-2-19 00:02:12的发言:


#ifndef _STDIO_H
#include <stdio.h>
#endif
#ifndef _MALLOC_H
#include <malloc.h>
#endif
#define MAX_SIZE 100
static  int* Top = NULL;
static  int* But = NULL;
int XKJCreat( void )
{
  
  But = (int * ...



快个p.

pop push都是O(1)的效率。

你还能写出小于O(1)的?

空间上还限制死了。

看到我的代码,你也好意思帖。

你的code扩展性简直差到极致。

你的stack能放类么,或者float,char double类型的数据?

请不要大言不惭。谢谢。

[ 本帖最后由 Devil_W 于 2010-2-19 12:21 编辑 ]
2010-02-19 12:07
XKJKingS
Rank: 2
等 级:论坛游民
帖 子:9
专家分:14
注 册:2010-2-18
收藏
得分:0 
回复 16楼 Devil_W
这里是C语言论坛 不是C++  
2010-02-19 12:45
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
以下是引用XKJKingS在2010-2-19 12:45:40的发言:

这里是C语言论坛 不是C++  


即使用c,链表结构的stack也比你array的stack更具扩展性。

时间复杂度相同,空间复杂度比你的更优。

我还以为你会说什么技术层面的东西的,

原来限制在语言层面。C/C++ 是不分家的。
2010-02-19 15:44
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
以下是引用XKJKingS在2010-2-19 12:45:40的发言:

这里是C语言论坛 不是C++  

我以为你会说什么技术层面的东西的

原来限制在语言层。C/C++是不分家的。

即使用c写,链表结构的stack也比你的更优

时间复杂度相同,空间复杂度比你更优。

内存拟合不是你连续空间能比的。
2010-02-19 15:47
快速回复:请教:用C语言写栈
数据加载中...
 
   



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

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