请教高手?

linxianliang5201314 2010-05-12 05:54:53
使用C#如何实现一个栈
要求 1.不得使用系统库函数
2.要保证线程安全
3. 如何维护栈的自动增长
...全文
176 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cuike519 2010-05-12
  • 打赏
  • 举报
回复
public class Stack {
private int m_Size = 16;
// 栈容器
private object[] m_items;
private int m_topIndex = -1;

public Stack() {
this.m_items = new object[m_Size];
}

public void Push(object el) {
if (m_topIndex >= m_Size - 1) {
// 扩大两倍的存储,把原来的数组复制到新数组里面
object[] desItems = new object[this.m_items.Length * 2];
Array.Copy(m_items, 0, desItems, 0, this.m_Size);
this.m_items = desItems;
}
m_topIndex++;
m_items[m_topIndex] = el;
}

public object Pop() {
if (m_topIndex < 0) {
throw new InvalidOperationException("stack empty");
}
object el = m_items[m_topIndex];
m_items[m_topIndex] = null;
m_topIndex--;
return el;
}
}

上面是一个简单的具有出栈和入栈操作用数组实现的栈,未经测试,只说明操作仅供参考。另外还可以使用链表实现。

貌似是数据结构的书里面都有类似的代码吧。。。
  • 打赏
  • 举报
回复
有没有高手把答案写我参考一下啊?
济南大飞哥 2010-05-12
  • 打赏
  • 举报
回复
把C#当做C语言就可以实现一个栈,自己写个类吧。
喜-喜 2010-05-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 linxianliang5201314 的回复:]
使用C#如何实现一个栈
要求 1.不得使用系统库函数
2.要保证线程安全
3. 如何维护栈的自动增长
[/Quote]

不得使用系统库函数!找本数据结构方面的书,自学一下...
  • 打赏
  • 举报
回复
有没有高手把答案写我参考一下啊?
cuike519 2010-05-12
  • 打赏
  • 举报
回复
自己实现就用数组实现,只在数组的一头插入和删除就行了。

线程安全是系统保证的和你的数据结构没有关系。

自动增长则可以设置一个岗哨标志位,没当达到岗哨的时候将数组的长度扩大一倍(或者固定一个值,一般是增加16个槽)
stg609 2010-05-12
  • 打赏
  • 举报
回复
可以用List这种集合不?

要实现栈,只要搞清楚Last in first out的机制,然后自已实现出栈、入栈这两个基本方法就可以了。至于线程安全,可以在执行出栈和入栈操作时加上锁。

自动增长?你是指容量不定?如果是List的话,就可以实现了。
理不完的逻辑 2010-05-12
  • 打赏
  • 举报
回复
学习~!顶
  • 打赏
  • 举报
回复
学习 请多多指教啊
缭绕飘渺 2010-05-12
  • 打赏
  • 举报
回复
不使用系统库函数
就要了解他们的实现原理
自己去实现个
楼主是要学习
还是应用啊
学习可以
应用的话我认为你自己写的应该还赶不上系统的吧

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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