/// <summary> ///In 的测试 ///</summary> public void In_OutTestHelperString() { LinkQueue <string> target = new LinkQueue <string>(); // TODO: 初始化为适当的值 List <string> list = new List <string>() { "aa", "bb", "cc", "dd", "ee" }; foreach (string item in list) { target.In(item); } foreach (string item in list) { Assert.AreEqual(item, target.Out()); } try { target.Out(); } catch (Exception myEx) { Assert.IsInstanceOfType(myEx, typeof(DataStructureException)); } }
public void EnqueueAndDequeue() { var students = new Student[] { new Student { No = 1, Name = "李1", Score = 22.1 }, new Student { No = 2, Name = "李2", Score = 32.3 }, new Student { No = 3, Name = "李3", Score = 42.5 } }; var linkQueue = new LinkQueue <Student>(); foreach (var student in students) { linkQueue.Enqueue(new Node <Student>(student)); } var deqStudent = new Node <Student>(); while (deqStudent != null) { deqStudent = linkQueue.Dequeue(); } }
/// <summary> /// 初始化 /// </summary> public CallCenter() { #region 变量初始化 QueueWriteToHistory = new LinkQueue <TextMessage>(); QueueUnSendToDB = new LinkQueue <TextMessage>(); QueueLogin = new LinkQueue <Login>(); QueueWaitSend = new LinkQueue <TextMessage>(); #endregion #region IM服务端初始化配置 PacketAnalyzer = new ProtobufPacket(); TcpConfig.Setup(Startup.ServerConfig.MaxConnectionCount); Server = new TcpServer(); Server.ChannelConnected += Server_ChannelConnected; //客户端连接时处理 Server.ChannelDisposed += Server_ChannelDisposed; //客户端断开时处理 Server.ChannelReceived += Server_ChannelReceived; //客户端收到消息时处理 Server.ChannelSent += Server_ChannelSent; //客户端发送消息处理 Server.Error += Server_Error; //服务发生错误时处理 #endregion #region 线程初始化 threadWriteToHistoryQueueWork = new Thread(new ThreadStart(WriteToHistoryQueueWork)); //写入消息历史队列处理-线程 threadLoginQueueWork = new Thread(new ThreadStart(LoginQueueWork)); //登录消息队列处理-线程 threadUnsendQueueWork = new Thread(new ThreadStart(UnsendQueueWork)); //待写入数据库的未发送出去消息队列处理-线程 threadWaitSendQueueWork = new Thread(new ThreadStart(WaitSendQueueWork)); //待发送给用户的消息队列处理-线程 threadWriteToHistoryQueueWork.IsBackground = true; threadLoginQueueWork.IsBackground = true; threadUnsendQueueWork.IsBackground = true; threadWaitSendQueueWork.IsBackground = true; #endregion }
public static async Task <string> DeleteLinked(ApplicationDbContext db, NoteHeader nh) { // Check for linked notefile(s) List <LinkedFile> links = await db.LinkedFile.Where(p => p.HomeFileId == nh.NoteFileId).ToListAsync(); if (links == null || links.Count < 1) { } else { foreach (var link in links) { if (link.SendTo) { LinkQueue q = new LinkQueue { Activity = LinkAction.Delete, LinkGuid = nh.LinkGuid, LinkedFileId = nh.NoteFileId, BaseUri = link.RemoteBaseUri }; db.LinkQueue.Add(q); await db.SaveChangesAsync(); } } } return("Ok"); }
public Project(GUIIface gui, String rootDir) { linkQueue_ = new LinkQueue(gui.GetDispatcher()); badLinkQueue_ = new LinkQueue(gui.GetDispatcher()); startingUris_ = new ObservableCollection<Uri>(); RootDirectory = rootDir; }
static void Main(string[] args) { //1.使用BCL中的队列 //Queue<int> queue = new Queue<int>(); //2.使用自己的顺序队列 //IQueue<int> queue = new SeqQueue<int>(); //3.使用自己的链队列 IQueue<int> queue = new LinkQueue<int>(); //入队(添加数据) queue.Enqueue(23); queue.Enqueue(45); queue.Enqueue(67); queue.Enqueue(89); Console.WriteLine(queue.Count); int i = queue.Dequeue(); //出队(取得队首数据并删除) Console.WriteLine(i); Console.WriteLine(queue.Count); int j = queue.Peek(); Console.WriteLine(j); Console.WriteLine(queue.Count); queue.Clear(); Console.WriteLine(queue.Count); Console.ReadKey(); }
/// <summary> ///LinkQueue`1 构造函数 的测试 ///</summary> public void LinkQueueConstructorTestHelper <T>() { LinkQueue <T> target = new LinkQueue <T>(); Assert.IsNull(target.Front); Assert.IsNull(target.Rear); Assert.AreEqual(0, target.GetLength()); }
/// <summary> ///GetFront 的测试 ///</summary> public void GetFrontTestHelperInt() { LinkQueue <int> target = new LinkQueue <int>(); // TODO: 初始化为适当的值 target.In(100); target.In(1); Assert.AreEqual(100, target.GetFront()); Assert.AreEqual(100, target.GetFront()); }
// //编写测试时,还可使用以下属性: // //使用 ClassInitialize 在运行类中的第一个测试前先运行代码 //[ClassInitialize()] //public static void MyClassInitialize(TestContext testContext) //{ //} // //使用 ClassCleanup 在运行完类中的所有测试后再运行代码 //[ClassCleanup()] //public static void MyClassCleanup() //{ //} // //使用 TestInitialize 在运行每个测试前先运行代码 //[TestInitialize()] //public void MyTestInitialize() //{ //} // //使用 TestCleanup 在运行完每个测试后运行代码 //[TestCleanup()] //public void MyTestCleanup() //{ //} // #endregion /// <summary> ///IsEmpty 的测试 ///</summary> public void IsEmptyTestHelper <T>() { LinkQueue <T> target = new LinkQueue <T>(); // TODO: 初始化为适当的值 bool expected = true; // TODO: 初始化为适当的值 bool actual; actual = target.IsEmpty(); Assert.AreEqual(expected, actual); target.In(default(T)); Assert.IsFalse(target.IsEmpty()); }
/// <summary> ///GetLength 的测试 ///</summary> public void GetLengthTestHelper <T>() { LinkQueue <T> target = new LinkQueue <T>(); // TODO: 初始化为适当的值 Assert.AreEqual(0, target.GetLength()); target.In(default(T)); Assert.AreEqual(1, target.GetLength()); target.In(default(T)); Assert.AreEqual(2, target.GetLength()); }
static void Main(string[] args) { IQueue<string> queue = new LinkQueue<string>(); queue.EnQueue("a1"); queue.EnQueue("a2"); queue.EnQueue("a3"); while (queue.IsEmpty() == false) { Console.WriteLine(queue.QueueFront); queue.DeQueue(); } }
public static CloudQueue GetLinkQueue() { CloudStorageAccount storageAccount = CloudStorageAccount.Parse( System.Configuration.ConfigurationManager.AppSettings["StorageConnectionString"]); CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient(); LinkQueue = queueClient.GetQueueReference("linkqueue"); LinkQueue.CreateIfNotExists(); LinkQueue.FetchAttributes(); return(LinkQueue); }
void Start() { LinkQueue <int> linkQueue = new LinkQueue <int>(); for (int i = 0; i < 3; i++) { linkQueue.Enqueue(i); } print("展示队列顶元素:" + linkQueue.Peek()); print("队列数量:" + linkQueue.Length()); for (int i = 0; i < 3; i++) { print(linkQueue.Dequeue()); } }
/// <summary> ///Clear 的测试 ///</summary> public void ClearTestHelper <T>() { LinkQueue <T> target = new LinkQueue <T>(); // TODO: 初始化为适当的值 target.In(default(T)); target.In(default(T)); Assert.IsNotNull(target.Front); Assert.IsNotNull(target.Rear); target.Clear(); Assert.IsNull(target.Front); Assert.IsNull(target.Rear); Assert.AreEqual(0, target.GetLength()); }
public void Test() { LinkQueue <int> stack = new LinkQueue <int>(); stack.EnQueue(1); stack.EnQueue(2); stack.EnQueue(3); Assert.Equal(1, stack.DeQueue()); Assert.Equal(2, stack.DeQueue()); Assert.Equal(3, stack.DeQueue()); stack.EnQueue(1); stack.EnQueue(2); Assert.Equal(1, stack.DeQueue()); Assert.Equal(2, stack.DeQueue()); stack.EnQueue(3); Assert.Equal(3, stack.DeQueue()); Assert.Equal(0, stack.DeQueue()); }
public void TestAsserLinkQueue() { LinkQueue <int> A = new LinkQueue <int>(); A.Add(1); A.Add(2); A.Add(3); A.Add(4); A.Add(5); //Take //Normal int testnum1 = A.Take(); //1-st int testnum2 = A.Take(); //2-st Assert.AreEqual(1, testnum1); Assert.AreEqual(2, testnum2); //Edge A.Take(); //3-st A.Take(); //4-st A.Take(); //5-st! }
/// <summary> /// �õ�AOV���������������� /// </summary> /// <returns>AOV����������������</returns> public string TopoSort() { string Result = string.Empty; int[] ID = GetInDegressList(); LinkQueue<int> LQ = new LinkQueue<int>(); for (int i = 0; i < vertexCount; i++) { if (ID[i] == 0) LQ.EnQueue(i); } if (LQ.Length == vertexCount) throw new Exception("������ͼ�������."); while (LQ.IsEmpty() == false) { int j = LQ.QueueFront; LQ.DeQueue(); Result += vertexList[j].VertexName + "\n"; EdgeNode p = vertexList[j].FirstNode; while (p != null) { ID[p.Index]--; if (ID[p.Index] == 0) { LQ.EnQueue(p.Index); } p = p.Next; } } int k; for (k = 0; k < vertexCount; k++) if (ID[k] != 0) break; return (k == vertexCount) ? Result : "��AOV���л�."; }
public void TestAsserLinkQueue() { LinkQueue<int> A = new LinkQueue<int>(); A.Add(1); A.Add(2); A.Add(3); A.Add(4); A.Add(5); //Take //Normal int testnum1 = A.Take(); //1-st int testnum2 = A.Take(); //2-st Assert.AreEqual(1, testnum1); Assert.AreEqual(2, testnum2); //Edge A.Take(); //3-st A.Take(); //4-st A.Take(); //5-st! }
public static async Task <NoteHeader> EditNote(ApplicationDbContext db, UserManager <IdentityUser> userManager, NoteHeader nh, NoteContent nc, string tags) { NoteHeader eHeader = await GetBaseNoteHeader(db, nh.Id); eHeader.LastEdited = nh.LastEdited; eHeader.ThreadLastEdited = nh.ThreadLastEdited; eHeader.NoteSubject = nh.NoteSubject; db.Entry(eHeader).State = EntityState.Modified; NoteContent eContent = await GetNoteContent(db, nh.NoteFileId, nh.ArchiveId, nh.NoteOrdinal, nh.ResponseOrdinal); eContent.NoteBody = nc.NoteBody; eContent.DirectorMessage = nc.DirectorMessage; db.Entry(eContent).State = EntityState.Modified; List <Tags> oTags = await GetNoteTags(db, nh.NoteFileId, nh.ArchiveId, nh.NoteOrdinal, nh.ResponseOrdinal, 0); db.Tags.RemoveRange(oTags); db.UpdateRange(oTags); db.Update(eHeader); db.Update(eContent); await db.SaveChangesAsync(); // deal with tags if (tags != null && tags.Length > 1) { var theTags = Tags.StringToList(tags, eHeader.Id, eHeader.NoteFileId, eHeader.ArchiveId); if (theTags.Count > 0) { await db.Tags.AddRangeAsync(theTags); await db.SaveChangesAsync(); } } // Check for linked notefile(s) List <LinkedFile> links = await db.LinkedFile.Where(p => p.HomeFileId == eHeader.NoteFileId && p.SendTo).ToListAsync(); if (links == null || links.Count < 1) { } else { foreach (var link in links) { if (link.SendTo) { LinkQueue q = new LinkQueue { Activity = LinkAction.Edit, LinkGuid = eHeader.LinkGuid, LinkedFileId = eHeader.NoteFileId, BaseUri = link.RemoteBaseUri }; db.LinkQueue.Add(q); await db.SaveChangesAsync(); } } } return(eHeader); }
public static async Task <NoteHeader> CreateNote(ApplicationDbContext db, UserManager <IdentityUser> userManager, NoteHeader nh, string body, string tags, string dMessage, bool send, bool linked) { if (nh.ResponseOrdinal == 0) // base note { nh.NoteOrdinal = await NextBaseNoteOrdinal(db, nh.NoteFileId, nh.ArchiveId); } if (!linked) { nh.LinkGuid = Guid.NewGuid().ToString(); } if (!send) // indicates an import operation / adjust time to UCT / assume original was CST = UCT-06, so add 6 hours { int offset = 6; if (nh.LastEdited.IsDaylightSavingTime()) { offset--; } Random rand = new Random(); int ms = rand.Next(999); nh.LastEdited = nh.LastEdited.AddHours(offset).AddMilliseconds(ms); nh.CreateDate = nh.LastEdited; nh.ThreadLastEdited = nh.CreateDate; } NoteFile nf = await db.NoteFile .Where(p => p.Id == nh.NoteFileId) .FirstOrDefaultAsync(); nf.LastEdited = nh.CreateDate; db.Entry(nf).State = EntityState.Modified; db.NoteHeader.Add(nh); await db.SaveChangesAsync(); NoteHeader newHeader = nh; if (newHeader.ResponseOrdinal == 0) { newHeader.BaseNoteId = newHeader.Id; db.Entry(newHeader).State = EntityState.Modified; await db.SaveChangesAsync(); } else { NoteHeader baseNote = await db.NoteHeader .Where(p => p.NoteFileId == newHeader.NoteFileId && p.ArchiveId == newHeader.ArchiveId && p.NoteOrdinal == newHeader.NoteOrdinal && p.ResponseOrdinal == 0) .FirstOrDefaultAsync(); newHeader.BaseNoteId = baseNote.Id; db.Entry(newHeader).State = EntityState.Modified; await db.SaveChangesAsync(); } NoteContent newContent = new NoteContent() { NoteHeaderId = newHeader.Id, NoteBody = body, DirectorMessage = dMessage }; db.NoteContent.Add(newContent); await db.SaveChangesAsync(); // deal with tags if (tags != null && tags.Length > 1) { var theTags = Tags.StringToList(tags, newHeader.Id, newHeader.NoteFileId, newHeader.ArchiveId); if (theTags.Count > 0) { await db.Tags.AddRangeAsync(theTags); await db.SaveChangesAsync(); } } // Check for linked notefile(s) List <LinkedFile> links = await db.LinkedFile.Where(p => p.HomeFileId == newHeader.NoteFileId && p.SendTo).ToListAsync(); if (linked || links == null || links.Count < 1) { } else { foreach (var link in links) { if (link.SendTo) { LinkQueue q = new LinkQueue { Activity = newHeader.ResponseOrdinal == 0 ? LinkAction.CreateBase : LinkAction.CreateResponse, LinkGuid = newHeader.LinkGuid, LinkedFileId = newHeader.NoteFileId, BaseUri = link.RemoteBaseUri }; db.LinkQueue.Add(q); await db.SaveChangesAsync(); } } } return(newHeader); }
static void Main(string[] args) { Console.WriteLine(Test(3)); #region 线性表测试 ////A<string> a = new A<string>(); //SingleLinkList<string> list1 = new SingleLinkList<string>(); //Console.WriteLine("是否是空表:{0}", list1.IsEmpty); //list1.Append("早上"); //ListPrint(list1); //Console.WriteLine(list1.GetLength); //list1.Insert("你好", 0); //ListPrint(list1); //list1.Append("中上"); //ListPrint(list1); //list1.Insert("陌生人", 0); //ListPrint(list1); //Console.WriteLine(list1.GetLength); //list1.Insert("傻逼", list1.GetLength-1); //ListPrint(list1); //Console.WriteLine("倒置表:" + list1.ReverseList()); //ListPrint(list1); //Console.WriteLine("表长:{0}", list1.GetLength); //Console.WriteLine("是否是空表:{0}", list1.IsEmpty); //Console.WriteLine("删除的是:{0}", list1.Delete(4)); //Console.WriteLine("表长:{0}", list1.GetLength); //ListPrint(list1); //Console.WriteLine("获取的是:{0}", list1.GetElem(0)); //Console.WriteLine("获取的是:{0}", list1.Locate("傻逼")); //Console.WriteLine("表长:{0}", list1.GetLength); //list1.Delete(list1.GetLength - 2); //list1.SetElem("睡觉了", 0); //ListPrint(list1); //Console.WriteLine("倒置表:" + list1.ReverseList()); //ListPrint(list1); //Console.WriteLine("清空"); //list1.Clear(); //Console.WriteLine("倒置表:" + list1.ReverseList()); //ListPrint(list1); //list1.Append("中上"); //Console.WriteLine("倒置表:" + list1.ReverseList()); //ListPrint(list1); //ListPrint(list1); //Console.ReadKey(); #endregion #region Stack测试 //SeqStack<string> list2 = new SeqStack<string>(4); //Console.WriteLine($"判空{list2.IsEmpty},元素:{list2.Count}"); //DataStructPrint(list2); //list2.Clear(); //DataStructPrint(list2); //list2.Push("一"); //list2.Push("二"); //list2.Push("三"); //list2.Push("四"); //list2.Push("五"); //DataStructPrint(list2); //Console.WriteLine($"判空{list2.IsEmpty},元素:{list2.Count}"); //Console.WriteLine($"获取:{list2.GetTop()}"); //Console.WriteLine($"出栈:{list2.Pop()}"); //Console.WriteLine($"获取:{list2.GetTop()}"); //Console.WriteLine($"出栈:{list2.Pop()}"); //Console.WriteLine($"出栈:{list2.Pop()}"); //Console.WriteLine($"判空{list2.IsEmpty},元素:{list2.Count}"); //Console.WriteLine($"出栈:{list2.Pop()}"); //Console.WriteLine($"出栈:{list2.Pop()}"); //Console.WriteLine($"出栈:{list2.Pop()}"); //Console.WriteLine($"判空{list2.IsEmpty},元素:{list2.Count}"); //list2.Push("六"); //DataStructPrint(list2); #endregion #region 队列 LinkQueue <string> list = new LinkQueue <string>(); Console.WriteLine($"元素个数:{list.Count};是否空:{list.IsEmpty}"); DataStructPrint(list); list.EnQueue("一"); list.EnQueue("二"); list.EnQueue("三"); Console.WriteLine($"元素个数:{list.Count};是否空:{list.IsEmpty}"); list.EnQueue("四"); list.EnQueue("五"); list.EnQueue("六"); DataStructPrint(list); Console.WriteLine($"元素个数:{list.Count};是否空:{list.IsEmpty}"); Console.WriteLine($"取出:{list.DeQueue()}"); Console.WriteLine($"取出:{list.DeQueue()}"); DataStructPrint(list); Console.WriteLine($"队头:{list.GetHead()}"); list.Clear(); //Console.WriteLine($"取出:{list.DeQueue()}"); //Console.WriteLine($"取出:{list.DeQueue()}"); //Console.WriteLine($"取出:{list.DeQueue()}"); //Console.WriteLine($"取出:{list.DeQueue()}"); DataStructPrint(list); #endregion Console.ReadKey(); }
/// <summary> /// �õ���������������� /// </summary> /// <param name="startNodeName">���й��������������ʼ������</param> /// <returns>���������������</returns> public string BFSTraversal(string startNodeName) { string BFSResult = string.Empty; int i = GetIndex(startNodeName); if (i != -1) { for (int j = 0; j < vertexCount; j++) vertexList[j].Visited = false; vertexList[i].Visited = true; BFSResult += vertexList[i].VertexName + "\n"; LinkQueue<int> Q = new LinkQueue<int>(); Q.EnQueue(i); while (Q.IsEmpty() == false) { int j = Q.QueueFront; Q.DeQueue(); EdgeNode p = vertexList[j].FirstNode; while (p != null) { if (vertexList[p.Index].Visited == false) { vertexList[p.Index].Visited = true; BFSResult += vertexList[p.Index].VertexName + "\n"; Q.EnQueue(p.Index); } p = p.Next; } } } return BFSResult; }