c#中链表+优先级的示例分析
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章给大家分享的是有关c#中链表+优先级的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。==================================Do
千家信息网最后更新 2026年11月04日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安全错误
数据库的锁怎样保障安全
互联网金融科技
湖北九亚互联网络科技有限公司
蓝思科技飞鸽互联网
美国互联网科技
科技创新互联网企业
左右互联网络科技
互联网5g黑科技有哪些
晋城互联网科技
工业互联网等科技实现智能化赋能
中和天地互联网科技有限公司
群盈汇互联网科技有限公司
山东星卡互联网科技有限公司官网
南通创西澳互联网科技有限公司
云南省自由互联网科技有限公司
互联网时代科技型公司的机会
互联网领先科技活动
张家口科技产业互联网平台
悟空问答互联网科技
恒生科技指数 中概互联网
如何强化互联网金融科技
互联网科技有限公司
合肥互联网科技公司
卫星互联网科技股票
互联网科技有哪些公司
浙江互联网科技研学营
乌苏新华互联网科技做什么的
世界互联网科技成果奖
盐城市攀科互联网科技有限公司
安徽九吞吴互联网科技有限公司
互联网科技企业文化