初学者,用c#怎样实现队列

时间:2022-09-07 12:01:38
c#里没有指针,不知道怎么实现队列
我自己定义了一个结构体,想用队列来实现一些特定的功能,
却一点也没有头绪

16 个解决方案

#1


用 
 System.Collections.Queue

#2


引用楼主 zhangzwei1988 的帖子:
c#里没有指针

误导

#3



 namespace   QueueWithCSharp   
  {   
          ///   <summary>   
          ///   LinkList   的摘要说明。   
          ///   </summary>   
          ///     
    
          public   class   Node   
          {   
                  public   int   data;   
                  public   Node   prior,   next;   
                    
                  public   Node()   
                  {   
                          prior   =   null;   
                          next   =   null;   
                          data   =   0;   
                  }   
          }   
    
          public   class   Queue   
          {   
                  Node   head,   rear;   
                  int   length;   
    
                  public   int   Length   
                  {   
                          get   
                          {   
                                  return   length;   
                          }   
                  }                 
      
                  public   Queue()   
                  {   
                          //   
                          //   TODO:   在此处添加构造函数逻辑   
                          //   
                          head   =   rear   =   null;   
                          length   =   0;   
                  }   
    
                  public   void   EnQueue(int   data)   //   追加   
                  {   
                          if   (rear   ==   null)   
                          {   
                                  rear   =   new   Node();   
                                  head   =   rear;   
                                  rear.data   =   data;   
                                  length   ++;   
                          }   
                          else   
                          {   
                                  rear.next   =   new   Node();   
                                  rear.next.data   =   data;   
                                  length   ++;   
                                  rear   =   rear.next;   
                          }   
                  }   
    
                  public   int   DeQueue()   
                  {   
                          if   (length   <=   0)   
                          {   
                                  rear   =   head   =   null;   
                                  Console.WriteLine("队列中没有元素");   
                                  return   0;   
                          }   
                          int   data   =   head.data;   
                          head   =   head.next;   
                          length   --;   
                          return   data;   
                  }   
    
                  public   void   Print()   
                  {   
                          string   str   =   "";   
                          Node   current   =   head;   
                          while   (current   !=   null)   
                          {   
                                  if   (current   ==   head)   
                                  {   
                                          str   +=     current.data.ToString();   
                                  }   
                                  else   
                                  {   
                                          str   +=   "   <-   "   +   current.data.ToString();   
                                  }   
                                  current   =   current.next;   
                          }//   end   while   current   
                          Console.WriteLine(str);   
                  }   
          }   
  }   
  
    仅供参考


#4


System.Collections.Generic.Queue 

#5


引用本身 就是安全的指针

向什么 队列,链表,查一MSDN 哇写得精制漂亮 极了 你去看一下就知到了。

比如:

class List<T>{
  public List(){this.next=new Node();}
  class Node{public T Tp{get;set;} public Node Next{get;set;}}
  Node next;
  public void Add(T t){
    Node n=new Node(){Tp=t};
    n.Next=this.next;
    this.next=n;   
  }

}

#6


学习~

#7


想法问题

#8


引用楼主 zhangzwei1988 的帖子:
c#里没有指针

C#里不需要指针

#9


C# 一样可以用指针

#10


JF

#11


.net中直接实现了 System.Collections.Queue。
泛型版本为:System.Collections.Generic.Queue<(Of <(T>)>)。

不需要指针在C#中采用引用类型,实现起来也很容易,不过没有必要再造*。

#12


初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列

#13


价值8000元的进销存管理源代码

980元出售     
源代码特点:为.net (c#)开发,功能强大,代码完整,可作产品也可做二次开发用。可以节省开发所需时间。

演示地址 www.3a3b.net用户名admin 密码admin

联系方式:QQ:895432102 tel:15975581471

一, 采购管理
模块名 功能简述
采购价查询 商品库预设价 查询商品预先设置的价格
供应商报价 查询供应商的报价,可以按照商品名、供应商查询
采购计划 录入采购的计划,一张计划单,可以增加需要采购多个货品
采购订单 录入采购订单,采购订单明细可以从“采购计划”中直接导入,也可以手动增加
采购订单审批 对采购订单进行审批
采购入库单 生成采购入库单,可以直接从订单中导入入库单商品的明细或者手动增加入库单明细
采购入库单审批 对采购入库进行审批,审批通过,对应货品的数量将增加.
采购退货 对采购退货进行管理。可以直接从订单中导入出库商品的明细或者手动增加退货单明细。
采购退货审批 对采购退货单进行审批,审批通过,对应货品的数量将减少
采购付款 采购付款直接从采购订单中调用已有的信息、并可以快速得到订单的已付金额和剩余金额
采购付款审批 对采购付款进行审批
采购主体业务流程:
采购计划→采购订单→采购订单审批→采购入库单→采购入库单审批→入库成功(库存数量增加)

采购订单→采购订单审批→采购入库单→采购入库单审批→入库成功(库存数量增加)

采购入库单→采购入库单审批→入库成功(库存数量增加)

付款的流程大致为:录入付款单—>审核付款单-审核通过




二,销售管理
模块名 功能简述
销售价查询 商品库预设价 查询商品预先设置的价格
商品报价资料 根据以往交易经验录入商品报价,可以设置多销售价
商品调价 对商品进行调价,可以按照现在价格的百分比进行批量调价。也可以查询到某个产品,对某个产品进行单个调价。
销售报价 增加对客户的销售报价单,可以对一个报价单增加多个商品
销售订单 录入销售订单,销售订单明细可以从“销售报价”中直接导入,也可以手动增加
销售订单审批 对销售订单进行审批 
货品配料 设置商品的配料。便于订单来了以后对商品的配料的查询
销售出库单 这里生成销售出库单,可以直接从订单中导入出库商品的明细或者手动增加出库单明细
销售出库单审批 对销售出库进行审批,对应货品的数量将减少
销售退货 对销售退货进行管理。可以直接从订单中导入出库商品的明细或者手动增加退货单明细
销售退货审批 对销售退货进行审批,对应货品的数量将增加
销售收款 录入销售收款单,销售收款单是以“销售订单”为基础的。可以快速的得到“已收金额”“剩余金额”
销售收款审批 对销售收款进行审批
销售计划
部门销售计划编制 
业务员销售计划编制 
货物销售计划编制

收款的流程大致为:录入收款单→审核收款单→收款通过

销售主体业务流程:
销售报价→销售订单→销售订单审批→销售出库单→销售出库单审批→出库成功(库存数量减少)

销售订单→销售订单审批→销售出库单→销售出库单审批→出库成功(库存数量减少)

销售出库单→销售出库单审批→出库成功(库存数量减少)

三,库存管理
模块名 功能简述
库存明细 可以在这里查看货品的数量或库警货品,库警的货品将以红色行表示
库存盘点 盘亏盘盈 对盘亏盘盈的明细
对商品盘点 对商品盘点
商品拆分捆绑 拆分商品 将库存中的某种商品拆分几种商品
捆绑商品 将库存中的某几种商品捆绑为某种商品
仓库调拨 库房与库房之间的调拨
入库 新增入库单,一张入库单可以增加多个货品
入库审批 对入库单进行审批
出库 新增出库单,一张出库单可以增加多个货品
出库审批 对出库单位进行审批
报损报溢 新增报损、报溢单据
月处理-结转库存 按照时间段执行“月处理”,月处理完以后的数据,不能再做修改



入库单→入库单审批→入库成功(库存数量增加)
出库单→出库单审批→出库成功(库存数量减少)
仓库调拨→调出仓数量减少、调入仓数量增加
货物拆分→被拆分的货物数量减少,拆分成的货物数量增加
货物捆绑→被捆绑的货物数量减少,捆绑成的货物数量增加










四,统计报表

模块名 功能简述
采购计划报表
采购订单报表
采购入库报表
采购退货报表
销售报价报表
销售订单报表
销售出库报表
销售退货报表
业务员销售报表
库存报表 统计每件货品的:库存量   采购入库量 采购退货量 销售出库量 销售退货量 其他入库量 其他出库量
入库报表
出库报表
仓库调拨报表
报损报表
报溢报表
应收款报表
应付款报表
往来单位报表 统计每个往来单位:应付款总额 已付款总额 未付款总额 应收款总额 已收款总额 未收款总额













五、参数设置
模块名 功能简述
货品类别 水果类、酒类等
货品资料 设置货品,包括库警察上下限,采购销售价
入库来源 自制、外购、调拨。。。。
出库用途 销售出库   采购退货   调拨出库   报废处理  盘点盘亏  内部调出  生产调用  废料处理
仓库信息 仓库1,2,3等
计量单位 瓶 捆 箱 个
部门设置
客户分类 一般客户,大型客户,代理商
往来单位 客户单位
供应商单位
两者皆是
定单类型 协议,合同
收款明细设置 转帐支票,现金支票,现金等
结算方式设置 退票,汇款,无承付等
发票类型 普通发票, 增值税发票
开户银行
运输方式 火车, 小卡, 大卡, 海运, 空运等
计划类型 周计划,月计划,年计划等



六、系统管理
模块名 功能简述
使用单位资料 设置使用的单位
职员设置 设置销售人员,采购员等
用户管理 设置登陆系统的用户
权限管理 设置用户访问模块的权限
修改密码
工作流设置 10种图形化工作流:采购订单、采购入库、采购退货、采购付款、销售订单、销售出库、销售退货、销售收款、入库、出库
提醒间歇设置 设置系统提醒的间歇时间,比如5分钟提醒一次,10分钟提醒一次
待办事宜 显示需要你审批的文件。
系统日志 记录用户操作的日志



]

#14


初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列

#15


有源代码肯定可以二次开发了!
顺便帮顶!

#16


那里有代码生成器演示呀?想看看功能?

#1


用 
 System.Collections.Queue

#2


引用楼主 zhangzwei1988 的帖子:
c#里没有指针

误导

#3



 namespace   QueueWithCSharp   
  {   
          ///   <summary>   
          ///   LinkList   的摘要说明。   
          ///   </summary>   
          ///     
    
          public   class   Node   
          {   
                  public   int   data;   
                  public   Node   prior,   next;   
                    
                  public   Node()   
                  {   
                          prior   =   null;   
                          next   =   null;   
                          data   =   0;   
                  }   
          }   
    
          public   class   Queue   
          {   
                  Node   head,   rear;   
                  int   length;   
    
                  public   int   Length   
                  {   
                          get   
                          {   
                                  return   length;   
                          }   
                  }                 
      
                  public   Queue()   
                  {   
                          //   
                          //   TODO:   在此处添加构造函数逻辑   
                          //   
                          head   =   rear   =   null;   
                          length   =   0;   
                  }   
    
                  public   void   EnQueue(int   data)   //   追加   
                  {   
                          if   (rear   ==   null)   
                          {   
                                  rear   =   new   Node();   
                                  head   =   rear;   
                                  rear.data   =   data;   
                                  length   ++;   
                          }   
                          else   
                          {   
                                  rear.next   =   new   Node();   
                                  rear.next.data   =   data;   
                                  length   ++;   
                                  rear   =   rear.next;   
                          }   
                  }   
    
                  public   int   DeQueue()   
                  {   
                          if   (length   <=   0)   
                          {   
                                  rear   =   head   =   null;   
                                  Console.WriteLine("队列中没有元素");   
                                  return   0;   
                          }   
                          int   data   =   head.data;   
                          head   =   head.next;   
                          length   --;   
                          return   data;   
                  }   
    
                  public   void   Print()   
                  {   
                          string   str   =   "";   
                          Node   current   =   head;   
                          while   (current   !=   null)   
                          {   
                                  if   (current   ==   head)   
                                  {   
                                          str   +=     current.data.ToString();   
                                  }   
                                  else   
                                  {   
                                          str   +=   "   <-   "   +   current.data.ToString();   
                                  }   
                                  current   =   current.next;   
                          }//   end   while   current   
                          Console.WriteLine(str);   
                  }   
          }   
  }   
  
    仅供参考


#4


System.Collections.Generic.Queue 

#5


引用本身 就是安全的指针

向什么 队列,链表,查一MSDN 哇写得精制漂亮 极了 你去看一下就知到了。

比如:

class List<T>{
  public List(){this.next=new Node();}
  class Node{public T Tp{get;set;} public Node Next{get;set;}}
  Node next;
  public void Add(T t){
    Node n=new Node(){Tp=t};
    n.Next=this.next;
    this.next=n;   
  }

}

#6


学习~

#7


想法问题

#8


引用楼主 zhangzwei1988 的帖子:
c#里没有指针

C#里不需要指针

#9


C# 一样可以用指针

#10


JF

#11


.net中直接实现了 System.Collections.Queue。
泛型版本为:System.Collections.Generic.Queue<(Of <(T>)>)。

不需要指针在C#中采用引用类型,实现起来也很容易,不过没有必要再造*。

#12


初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列

#13


价值8000元的进销存管理源代码

980元出售     
源代码特点:为.net (c#)开发,功能强大,代码完整,可作产品也可做二次开发用。可以节省开发所需时间。

演示地址 www.3a3b.net用户名admin 密码admin

联系方式:QQ:895432102 tel:15975581471

一, 采购管理
模块名 功能简述
采购价查询 商品库预设价 查询商品预先设置的价格
供应商报价 查询供应商的报价,可以按照商品名、供应商查询
采购计划 录入采购的计划,一张计划单,可以增加需要采购多个货品
采购订单 录入采购订单,采购订单明细可以从“采购计划”中直接导入,也可以手动增加
采购订单审批 对采购订单进行审批
采购入库单 生成采购入库单,可以直接从订单中导入入库单商品的明细或者手动增加入库单明细
采购入库单审批 对采购入库进行审批,审批通过,对应货品的数量将增加.
采购退货 对采购退货进行管理。可以直接从订单中导入出库商品的明细或者手动增加退货单明细。
采购退货审批 对采购退货单进行审批,审批通过,对应货品的数量将减少
采购付款 采购付款直接从采购订单中调用已有的信息、并可以快速得到订单的已付金额和剩余金额
采购付款审批 对采购付款进行审批
采购主体业务流程:
采购计划→采购订单→采购订单审批→采购入库单→采购入库单审批→入库成功(库存数量增加)

采购订单→采购订单审批→采购入库单→采购入库单审批→入库成功(库存数量增加)

采购入库单→采购入库单审批→入库成功(库存数量增加)

付款的流程大致为:录入付款单—>审核付款单-审核通过




二,销售管理
模块名 功能简述
销售价查询 商品库预设价 查询商品预先设置的价格
商品报价资料 根据以往交易经验录入商品报价,可以设置多销售价
商品调价 对商品进行调价,可以按照现在价格的百分比进行批量调价。也可以查询到某个产品,对某个产品进行单个调价。
销售报价 增加对客户的销售报价单,可以对一个报价单增加多个商品
销售订单 录入销售订单,销售订单明细可以从“销售报价”中直接导入,也可以手动增加
销售订单审批 对销售订单进行审批 
货品配料 设置商品的配料。便于订单来了以后对商品的配料的查询
销售出库单 这里生成销售出库单,可以直接从订单中导入出库商品的明细或者手动增加出库单明细
销售出库单审批 对销售出库进行审批,对应货品的数量将减少
销售退货 对销售退货进行管理。可以直接从订单中导入出库商品的明细或者手动增加退货单明细
销售退货审批 对销售退货进行审批,对应货品的数量将增加
销售收款 录入销售收款单,销售收款单是以“销售订单”为基础的。可以快速的得到“已收金额”“剩余金额”
销售收款审批 对销售收款进行审批
销售计划
部门销售计划编制 
业务员销售计划编制 
货物销售计划编制

收款的流程大致为:录入收款单→审核收款单→收款通过

销售主体业务流程:
销售报价→销售订单→销售订单审批→销售出库单→销售出库单审批→出库成功(库存数量减少)

销售订单→销售订单审批→销售出库单→销售出库单审批→出库成功(库存数量减少)

销售出库单→销售出库单审批→出库成功(库存数量减少)

三,库存管理
模块名 功能简述
库存明细 可以在这里查看货品的数量或库警货品,库警的货品将以红色行表示
库存盘点 盘亏盘盈 对盘亏盘盈的明细
对商品盘点 对商品盘点
商品拆分捆绑 拆分商品 将库存中的某种商品拆分几种商品
捆绑商品 将库存中的某几种商品捆绑为某种商品
仓库调拨 库房与库房之间的调拨
入库 新增入库单,一张入库单可以增加多个货品
入库审批 对入库单进行审批
出库 新增出库单,一张出库单可以增加多个货品
出库审批 对出库单位进行审批
报损报溢 新增报损、报溢单据
月处理-结转库存 按照时间段执行“月处理”,月处理完以后的数据,不能再做修改



入库单→入库单审批→入库成功(库存数量增加)
出库单→出库单审批→出库成功(库存数量减少)
仓库调拨→调出仓数量减少、调入仓数量增加
货物拆分→被拆分的货物数量减少,拆分成的货物数量增加
货物捆绑→被捆绑的货物数量减少,捆绑成的货物数量增加










四,统计报表

模块名 功能简述
采购计划报表
采购订单报表
采购入库报表
采购退货报表
销售报价报表
销售订单报表
销售出库报表
销售退货报表
业务员销售报表
库存报表 统计每件货品的:库存量   采购入库量 采购退货量 销售出库量 销售退货量 其他入库量 其他出库量
入库报表
出库报表
仓库调拨报表
报损报表
报溢报表
应收款报表
应付款报表
往来单位报表 统计每个往来单位:应付款总额 已付款总额 未付款总额 应收款总额 已收款总额 未收款总额













五、参数设置
模块名 功能简述
货品类别 水果类、酒类等
货品资料 设置货品,包括库警察上下限,采购销售价
入库来源 自制、外购、调拨。。。。
出库用途 销售出库   采购退货   调拨出库   报废处理  盘点盘亏  内部调出  生产调用  废料处理
仓库信息 仓库1,2,3等
计量单位 瓶 捆 箱 个
部门设置
客户分类 一般客户,大型客户,代理商
往来单位 客户单位
供应商单位
两者皆是
定单类型 协议,合同
收款明细设置 转帐支票,现金支票,现金等
结算方式设置 退票,汇款,无承付等
发票类型 普通发票, 增值税发票
开户银行
运输方式 火车, 小卡, 大卡, 海运, 空运等
计划类型 周计划,月计划,年计划等



六、系统管理
模块名 功能简述
使用单位资料 设置使用的单位
职员设置 设置销售人员,采购员等
用户管理 设置登陆系统的用户
权限管理 设置用户访问模块的权限
修改密码
工作流设置 10种图形化工作流:采购订单、采购入库、采购退货、采购付款、销售订单、销售出库、销售退货、销售收款、入库、出库
提醒间歇设置 设置系统提醒的间歇时间,比如5分钟提醒一次,10分钟提醒一次
待办事宜 显示需要你审批的文件。
系统日志 记录用户操作的日志



]

#14


初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列
初学者,用c#怎样实现队列

#15


有源代码肯定可以二次开发了!
顺便帮顶!

#16


那里有代码生成器演示呀?想看看功能?