c#中链表+优先级的示例分析
发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,这篇文章给大家分享的是有关c#中链表+优先级的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。==================================Do
千家信息网最后更新 2025年11月11日c#中链表+优先级的示例分析
这篇文章给大家分享的是有关c#中链表+优先级的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
==================================Document.cs
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication4{ public class Document//文档类 { public string Title { get; private set; }//标题 public string Content { get; private set; }//内容 public byte Priority { get; private set; }//优先级 public Document(string title, string content, byte priority) { this.Title = title; this.Content = content; this.Priority = priority; } public override string ToString() { return string.Format("标题:{0},内容:{1},优先级:{2}", this.Title, this.Content, this.Priority); } }}==================================PriorityDocumentManage.cs【核心】
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Collections;namespace ConsoleApplication4{ public class PriorityDocumentManage:IEnumerable { //链表 private readonly LinkedList documentList; //优先级节点 private readonly List> priorityNodes; public PriorityDocumentManage() { //初始化链表 documentList = new LinkedList(); //初始化优先级节点 priorityNodes = new List>(); //设置优先级为0~9 for (int i = 0; i < 10; i++) { priorityNodes.Add(new LinkedListNode(null)); } } //向链表中添加文档 public void AddDocument(Document d) { if (d == null) throw new ArgumentNullException("对象不能为空"); AddDcoumentToPriorityNode(d, d.Priority); } private void AddDcoumentToPriorityNode(Document doc, int priority) { if (priority > 9 || priority < 0) throw new ArgumentException("优先级溢出"); if (priorityNodes[priority].Value == null)//该优先级节点的值为空,说明链表中还没有存在该优先级的元素 { --priority; if (priority >= 0)//继续往更低的优先级下面找 { AddDcoumentToPriorityNode(doc, priority); } else//进入此方法,说明是第一个插入链表的元素 { documentList.AddLast(doc);//将元素插入到链表的最后位置 priorityNodes[doc.Priority] = documentList.Last;//把传入的元素赋值给对应优先级的优先级节点 } } else { LinkedListNode currentDoc = priorityNodes[priority]; if (doc.Priority == priority)//优先级节点存对应的优先级已存在元素【优先级节点只存对应优先级最后添加的元素】 { documentList.AddAfter(currentDoc, doc);//将元素插入到对应元素的后面 priorityNodes[doc.Priority] = currentDoc.Next;//将对应的优先级节点赋值为对应优先级最后添加的元素 } else//说明不是传入元素对应的优先级节点 { while (currentDoc.Previous != null && currentDoc.Previous.Value.Priority == priority)//找到该优先级最前面的元素 { currentDoc = currentDoc.Previous; } documentList.AddBefore(currentDoc, doc);//插入该元素的前面 priorityNodes[doc.Priority] = currentDoc.Previous;//将对应的优先级节点赋值为对应优先级最后添加的元素 } } } public IEnumerator GetEnumerator() { return documentList.GetEnumerator(); } //找到第一个元素,并删除该元素 public Document GetDocument() { Document d = documentList.First.Value; documentList.RemoveFirst(); return d; } }} ==================================主程序
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication4{ class Program { static void Main(string[] args) { PriorityDocumentManage pdm = new PriorityDocumentManage(); pdm.AddDocument(new Document("a", "a", 5)); pdm.AddDocument(new Document("b", "b", 5)); pdm.AddDocument(new Document("c", "c", 8)); pdm.AddDocument(new Document("d", "d", 5)); pdm.AddDocument(new Document("e", "e", 6)); foreach (var item in pdm) { Console.WriteLine(item); } Console.ReadKey(); } }}
感谢各位的阅读!关于"c#中链表+优先级的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
优先级
元素
节点
内容
示例
c#
分析
文档
更多
标题
篇文章
不错
实用
主程序
位置
对象
文章
核心
此方法
看吧
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
企业微信服务器结构模式
铁路供电网络安全防护
单位网络安全人员离岗制度
云梯vpn服务器地址
单位网络安全相关工作制度
工业软件开发组织管理
法国宣布网络安全建设计划
深圳网络安全宣传周主题活动
网络技术的优点
软件开发团队考核方法
专门的统计数据库平台有哪些
软件开发kpi季度
计算机网络技术有必要专升本吗
我的世界服务器背包数据库异常
xls 做数据库
数据库太大打开软件慢
大服务器
西安微趋道互联网科技
操作系统中什么是数据库
石景山服务器回收
百度主服务器在哪个位置
应届生软件开发工资待遇
方舟手游进服送100级服务器推荐
消费者数据库信息
华为服务器能源管理
淘宝的数据库怎么建
sql数据库报错42704
4399网游服务器时间
厦航软件开发面经笔经
山东飞信软件开发有限公司