節點檢測源碼
『壹』 給定單鏈表,檢測是否有環.如果有環,則求出進入環的第一個節點
判斷單向鏈表是否有環,可以採用快指針與慢指針的方式來解決。即定義一個快指針fast和一個慢指針slow,使得fast每次跳躍兩
個節點,slow每次跳躍一個節點。如果鏈表沒有環的話,則slow與fast永遠不會相遇(這里鏈表至少有兩個節點);如果有環,則fast與slow
將會在環中相遇。判斷出鏈表有環以後,則需要算出進入環的第一個節點。在fast與slow第一次相遇後,設置一個節點pNode從鏈表的頭部開始遍歷,
每次只遍歷一個節點。這樣,當fast與slow再次相遇時,pNode所處的位置便是環的首部。以下該問題的實現源碼(C語言描述):
LNode* GetLoopNode(LNode* head)
{
//前置條件的判斷
if (!head)
{
return NULL;
}
//定義一個快指針和一個慢指針
LNode* fast = head;
LNode* slow = head;
while (fast && (fast->next))
{
fast = fast->next->next;
slow = slow->next;
if (fast == slow)
{
//如果有環,則返回環的第一個節點
slow = head;
while (1)
{
fast = fast->next;
slow = slow->next;
if (fast == slow)
{
break;
}
}
return slow;
}
}
return NULL;
}
『貳』 Node.contains檢測元素節點是不是另一個元素的子節點
網頁開發中檢測元素節點是不是另一個元素的子節點是一件很常用的事情,這樣方便我們去判斷方法事件,然而很多人不知道Element.classList API,例如classname管理需要特定的javascript工具包才可以完成,然而像檢測元素節點是不是另一個元素的子節點這樣的方法,認為只能通過工具或者是循環檢測contains才能完成,其實下面的代碼也可以:
代碼如下
復制代碼
function(parentNode, childNode) {
if('contains' in parentNode) {
return parentNode.contains(childNode);
}
else {
return parentNode.compareDocumentPosition(childNode) % 16;
}
}
你會注意到我們的檢查contains在使用它之前,你可能會想到,用鮮為人知的compareDocumentPosition在這種情況下,contains不支持(Firefox < 9)。這種方法將是有益的 當創建一個拖放控制項和確定的動作之間的列表。
補充:jquery如何判斷當前元素是不是某節點的子元素
代碼如下
復制代碼
$(node).click(function(){
if($(this).parents('.aa').length > 0){
//是aa類下的子節點
}
});
『叄』 可以用什麼命令(或者軟體之類的工具)檢測網路節點的位置並且可以根據節點的ip判斷整個網路的拓撲結構
netstat 和 print route
『肆』 節點自動檢測失敗什麼意思
節點自動檢測失敗指一台電腦或其他設備與一個有獨立地址和具有傳送或接收數據功能的網路相連。
節點可以是工作站、客戶、網路用戶或個人計算機,還可以是伺服器、列印機和其他網路連接的設備。每一個工作站﹑伺服器、終端設備、網路設備,即擁有自己唯一網路地址的設備都是網路節點。
整個網路就是由這許許多多的網路節點組成的,把許多的網路節點用通信線路連接起來,形成一定的幾何關系,這就是計算機網路拓撲。
命名實體識別:
命名實體被定義為文本中包含人名、地名以及機構名的實體,例如在句子「[國際奧委會]主席[巴赫]訪問[中國]」中,「國際奧委會」是機構名,「巴赫」是人名,「中國」是地名,通過這些命名實體就能獲取到句子的主要內容。
隨著搜索引擎、機器翻譯、數據挖掘等技術的不斷發展,對於命名實體也有了更加寬泛的定義。而在醫學臨床以及生物相關領域,許多專有名詞也陸續被學者們定義為命名實體,例如蛋白質名、基因名、疾病名等。在當今的自然語言處理研究中,普遍將命名實體分為名詞、數字和時間這三種類型。
『伍』 如何檢測節點網路中是否存在閉環之java實現
java實現檢測閉環的方法:
*
* 功能:判斷網路中是否存在閉環
* 作者:pieryon
* @param nodeCollections
* @return
* @throws Exception
*/
public boolean isContainLoop(Map<String,Map<String,Object>> nodeCollections) throws Exception{
//用map的hash碼計算,速度更快
Map<String,String> visitedList = new HashMap<String, String>();
/**
* 初始化"起點
*/
String startNode = getOrigin(nodeCollections);
boolean containLoop = false ;
/**
* 初始化"視野"
*/
Map<String,String> nodeName = new HashMap<String, String>() ;
nodeName.put("nextNode", startNode);
nodeName.put("curNode", startNode);
nodeName.put("beforeNode", startNode);
int count = 0 ;
/**
* 如果當前不含有閉環,並且沒有遍歷完起點節點的所有分支則進入循環
*/
while(!containLoop
&& !(nodeName.get("beforeNode").equals(nodeName.get("curNode"))
&& nodeName.get("nextNode") == null )){
nodeName = traverse(nodeCollections, nodeName, visitedList);
if(count > 1){
containLoop = containSameNode(visitedList,nodeName.get("nextNode"));
}
count ++ ;
}
return containLoop;
}
『陸』 php 檢測源代碼是否被改動過和是否項目中有增加或刪除的文件的實現思路
如果想自己做, hashtable是一定的
建一個hashtable, 儲存當前內容, 同時該hashtable的id也同樣可以用於作為文件功能等記錄的id之用, 然後無論是windows還是linux都可以cron的,去做一個php文件去匹配吧, 文件修改時間無所謂的, md5(file)更有意義
如果單純使用php, 遍歷目錄是必須的, 無論哪個os都提供文件動作的監控能力,但是這不在php的工作范圍內,所以無法實現所謂的監控,你可以看看同步類軟體,無論哪個操作系統都是直接去os的基層拿現成的東西來用,不用特地耗費資源去自己不斷遍歷目錄監控的,
svn/cvs是主動提交改動的, 而所謂監控,那就是被動形式了,只有在改動時才有動作的叫監控,
你要php實現源碼監控,一句話,不可能,只能做遞歸/迭代, 用hashtable處理並不斷操作hashdb
ps:文件功能你們都不寫進注釋嗎,注釋本來就有這種功能, 比如phpdoc-_
『柒』 java swing左邊樹圖,當點擊任意節點時,右邊顯示顯示數據, 求一個簡單的源碼例子
importjava.awt.BorderLayout;
importjava.awt.Container;
importjava.awt.Dimension;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
importjavax.swing.JTree;
importjavax.swing.event.TreeSelectionEvent;
importjavax.swing.event.TreeSelectionListener;
importjavax.swing.tree.DefaultMutableTreeNode;
{
privateJPanelp;
publicTestSwingTree(Stringtitle){
super(title);
}
publicvoidinit(){
Containerc=this.getContentPane();
DefaultMutableTreeNoderoot=newDefaultMutableTreeNode("root");
DefaultMutableTreeNodechild1=newDefaultMutableTreeNode("child1");
DefaultMutableTreeNodechild11=newDefaultMutableTreeNode("child11");
DefaultMutableTreeNodechild12=newDefaultMutableTreeNode("child12");
DefaultMutableTreeNodechild2=newDefaultMutableTreeNode("child2");
DefaultMutableTreeNodechild3=newDefaultMutableTreeNode("child3");
DefaultMutableTreeNodechild31=newDefaultMutableTreeNode("child31");
root.add(child1);
root.add(child2);
root.add(child3);
child1.add(child11);
child1.add(child12);
child3.add(child31);
JTreetree=newJTree(root);
tree.setPreferredSize(newDimension(120,400));
tree.addTreeSelectionListener(newTreeSelectionListener(){
publicvoidvalueChanged(TreeSelectionEvente){
p.removeAll();
JLabell=newJLabel(e.getPath().toString());
l.setBounds(5,190,170,20);
p.add(l);
p.repaint();
}
});
c.add(tree,BorderLayout.WEST);
p=newJPanel();
p.setLayout(null);
p.setPreferredSize(newDimension(180,400));
c.add(p,BorderLayout.CENTER);
this.setLocation(400,300);
this.setSize(300,400);
this.setResizable(false);
this.setVisible(true);
this.setDefaultCloseOperation(this.DISPOSE_ON_CLOSE);
}
publicstaticvoidmain(String[]args){
newTestSwingTree("TestSwingJtree").init();
}
}
『捌』 如何檢測所用節點是否可用
定義節點包含使用節點,要使用節點必須提前定義,但定義的可以不使用
定義節點應該包含了使用節點。定義了不一定使用,但使用是一定要定義的