<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>CS400 on Changlin&#39;s Blog</title>
    <link>https://timely-sprinkles-c55fc0.netlify.app/tags/cs400/</link>
    <description>Recent content in CS400 on Changlin&#39;s Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 27 Dec 2023 15:49:01 -0600</lastBuildDate><atom:link href="https://timely-sprinkles-c55fc0.netlify.app/tags/cs400/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Red Black Tree Removal</title>
      <link>https://timely-sprinkles-c55fc0.netlify.app/posts/rbt/</link>
      <pubDate>Wed, 27 Dec 2023 15:49:01 -0600</pubDate>
      
      <guid>https://timely-sprinkles-c55fc0.netlify.app/posts/rbt/</guid>
      <description>Red Black Tree Red Black Tree Removal
Case1: If removing a red node with no black child node , then we can remove this red node directly.
Case2: If removing a black node with red child node, then change the color of that red child node.
(Note: The above two cases are only for the removing node with one child node.)
Case3: If removing a black node with two child nodes, replace with the in-order successor node and change color before removing the black node.</description>
    </item>
    
    <item>
      <title>Regex</title>
      <link>https://timely-sprinkles-c55fc0.netlify.app/posts/regex/</link>
      <pubDate>Mon, 18 Dec 2023 19:33:06 -0600</pubDate>
      
      <guid>https://timely-sprinkles-c55fc0.netlify.app/posts/regex/</guid>
      <description>Regular Expression A regular expression (shortened as regex or regexp), sometimes referred to as rational expression, is a sequence of characters that specifies a match pattern in text. Usually such patterns are used by string-searching algorithms for &amp;ldquo;find&amp;rdquo; or &amp;ldquo;find and replace&amp;rdquo; operations on strings, or for input validation.
Basic rule for Regex Quantifier(限定符):only for one character ?: means the character show up before ? once or zero, for example:</description>
    </item>
    
    <item>
      <title>Dot Language</title>
      <link>https://timely-sprinkles-c55fc0.netlify.app/posts/dot/</link>
      <pubDate>Mon, 18 Dec 2023 19:15:45 -0600</pubDate>
      
      <guid>https://timely-sprinkles-c55fc0.netlify.app/posts/dot/</guid>
      <description>Dot Language Dot language is a abstract grammar for defining Graphviz nodes, edges, graphs, subgraphs, and clusters. An edgeop is -&amp;gt; in directed graphs and -- in undirected graphs.
Semicolons and commas aid readability but are not required. Also, any amount of whitespace may be inserted between terminals.
Below is a example dot file:
And it display the partial graph generated by the dot language:</description>
    </item>
    
    <item>
      <title>Dijkstra&#39;s Algorithm</title>
      <link>https://timely-sprinkles-c55fc0.netlify.app/posts/dijkstra/</link>
      <pubDate>Mon, 18 Dec 2023 18:39:55 -0600</pubDate>
      
      <guid>https://timely-sprinkles-c55fc0.netlify.app/posts/dijkstra/</guid>
      <description>Dijkstra&amp;rsquo;s Algorithm Given a weighted graph and a source vertex in the graph, find the shortest paths from the source to all the other vertices in the given graph.
The process of the algorithm:
每次从未标记的节点中选择距离出发点最近的节点，标记并收录到最优路径集合中 计算刚加入节点A的邻近节点B的距离（不包含标记的节点），若节点A的距离+节点A到节点B的边长之和&amp;lt;节点B的距离，就更新节点B的距离和前面节点 循环直到目的地被标记
Node Starting Node Previous Node 0 0 1 4 0 2 12 1 3 19 2 4 21 5 5 11 6 6 9 7 7 8 0 8 14 2 From the table we know that the shortest path from node 0 to 4 is 21, we can also backtrace the path using the previous node from above: 4-5-6-7-0.</description>
    </item>
    
    <item>
      <title>Minimum Spanning Tree</title>
      <link>https://timely-sprinkles-c55fc0.netlify.app/posts/mst/</link>
      <pubDate>Mon, 18 Dec 2023 17:56:52 -0600</pubDate>
      
      <guid>https://timely-sprinkles-c55fc0.netlify.app/posts/mst/</guid>
      <description>Minimum Spanning Tree A minimum spanning tree (MST) or minimum weight spanning tree is a subset of the edges of a connected, edge-weighted undirected graph that connects all the vertices together, without any cycles and with the minimum possible total edge weight. That is, it is a spanning tree whose sum of edge weights is as small as possible.
Kruskal&amp;rsquo;s Algorithm Kruskal’s algorithm to find the minimum cost spanning tree uses the greedy approach.</description>
    </item>
    
    <item>
      <title>Lambda Expressions</title>
      <link>https://timely-sprinkles-c55fc0.netlify.app/posts/lambda/</link>
      <pubDate>Mon, 18 Dec 2023 13:36:54 -0600</pubDate>
      
      <guid>https://timely-sprinkles-c55fc0.netlify.app/posts/lambda/</guid>
      <description>Lambda Expressions One issue with anonymous classes is that if the implementation of your anonymous class is very simple, such as an interface that contains only one method, then the syntax of anonymous classes may seem unwieldy and unclear. In these cases, you&amp;rsquo;re usually trying to pass functionality as an argument to another method, such as what action should be taken when someone clicks a button. Lambda expressions enable you to do this, to treat functionality as method argument, or code as data.</description>
    </item>
    
    <item>
      <title>Anonymous classes</title>
      <link>https://timely-sprinkles-c55fc0.netlify.app/posts/anonymous/</link>
      <pubDate>Mon, 18 Dec 2023 00:17:24 -0600</pubDate>
      
      <guid>https://timely-sprinkles-c55fc0.netlify.app/posts/anonymous/</guid>
      <description>Anonymous Classes in Java Anonymous classes enable you to make your code more concise. They enable you to declare and instantiate a class at the same time. They are like local classes except that they do not have a name. Use them if you need to use a local class only once. Anonymous classes can often used in graphical user interface (GUI) applications.
Declaring Anonymous Classes
public class HelloWorldAnonymousClasses { interface HelloWorld { public void greet(); public void greetSomeone(String someone); } public void sayHello() { class EnglishGreeting implements HelloWorld { String name = &amp;#34;world&amp;#34;; public void greet() { greetSomeone(&amp;#34;world&amp;#34;); } public void greetSomeone(String someone) { name = someone; System.</description>
    </item>
    
    <item>
      <title>CSV</title>
      <link>https://timely-sprinkles-c55fc0.netlify.app/posts/csv/</link>
      <pubDate>Sun, 17 Dec 2023 20:32:54 -0600</pubDate>
      
      <guid>https://timely-sprinkles-c55fc0.netlify.app/posts/csv/</guid>
      <description>CSV Formatted Data Comma-separated values (CSV) is a text file format that uses commas to separate values. A CSV file stores tabular data (numbers and text) in plain text, where each line of the file typically represents one data record. Each record consists of the same number of fields, and these are separated by commas in the CSV file. If the field delimiter itself may appear within a field, fields can be surrounded with quotation marks</description>
    </item>
    
    <item>
      <title>BTree</title>
      <link>https://timely-sprinkles-c55fc0.netlify.app/posts/btree/</link>
      <pubDate>Sun, 17 Dec 2023 14:54:37 -0600</pubDate>
      
      <guid>https://timely-sprinkles-c55fc0.netlify.app/posts/btree/</guid>
      <description>Btree The idea we saw earlier of putting multiple set (list, hash table) elements together into large chunks that exploit locality can also be applied to trees. Binary search trees are not good for locality because a given node of the binary tree probably occupies only a fraction of any cache line. B-trees are a way to get better locality by putting multiple elements into each tree node.
Degree m: Maximum number of the children</description>
    </item>
    
    <item>
      <title>GNU Make</title>
      <link>https://timely-sprinkles-c55fc0.netlify.app/posts/make/</link>
      <pubDate>Sun, 17 Dec 2023 14:45:30 -0600</pubDate>
      
      <guid>https://timely-sprinkles-c55fc0.netlify.app/posts/make/</guid>
      <description>Makefile GNU Make is a tool which controls the generation of executables and other non-source files of a program from the program&amp;rsquo;s source files.
Make gets its knowledge of how to build your program from a file called the makefile, which lists each of the non-source files and how to compute it from other files. When you write a program, you should write a makefile for it, so that it is possible to use Make to build and install the program.</description>
    </item>
    
    <item>
      <title>AVL Trees</title>
      <link>https://timely-sprinkles-c55fc0.netlify.app/posts/avltrees/</link>
      <pubDate>Sun, 17 Dec 2023 13:38:20 -0600</pubDate>
      
      <guid>https://timely-sprinkles-c55fc0.netlify.app/posts/avltrees/</guid>
      <description>AVL Trees AVL Trees is also known as self balancing tree. Self balancing means doing some operations, the tree tries to keep its height as low as possible.
In an avl tree the height of the two sub trees differ at most one(defined as balance factor), we also have a formula for this balance factor based on this property:
balance factor = height of left subtree - height of right subtree</description>
    </item>
    
    <item>
      <title>Bash</title>
      <link>https://timely-sprinkles-c55fc0.netlify.app/posts/bash/</link>
      <pubDate>Thu, 14 Dec 2023 18:31:31 -0600</pubDate>
      
      <guid>https://timely-sprinkles-c55fc0.netlify.app/posts/bash/</guid>
      <description>Common shell type The most commonly used bash command 1.echo: similar to print
$echo &amp;#39;Welcome to Bash&amp;#39; 2.date:display the current date and time
$date 3.cal:display the calendar of the current month
$cal Notes: Ctrl+L or clear to clean the command line
4.pwd:display the current working directory
5.ls: list the contents of the directory
Parameters
5.1 ls -a:For listing all the hidden files in a folder 5.2 ls -l:Prints out a longer and more detailed listing of the files</description>
    </item>
    
    <item>
      <title>BST Review</title>
      <link>https://timely-sprinkles-c55fc0.netlify.app/posts/bst/</link>
      <pubDate>Thu, 14 Dec 2023 01:04:40 -0600</pubDate>
      
      <guid>https://timely-sprinkles-c55fc0.netlify.app/posts/bst/</guid>
      <description>The properties of the binary search tree All elements in the left subtree is less that the root node. All elements in the right subtree is greater than the root node. All the elements in the tree is unique. BST Search To search one node just compare it with the cur root node, if it less than the root node then go left subtree and otherwise to find it through the right subtree.</description>
    </item>
    
    <item>
      <title>CS400</title>
      <link>https://timely-sprinkles-c55fc0.netlify.app/posts/cs400/</link>
      <pubDate>Mon, 11 Dec 2023 23:16:50 -0600</pubDate>
      
      <guid>https://timely-sprinkles-c55fc0.netlify.app/posts/cs400/</guid>
      <description>UW-Madison CS400 The overall contents of CS400
Review Checklist: </description>
    </item>
    
  </channel>
</rss>
