摘要: js文件Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->1//JScript文件2functionGetXmlRequest()3{4varxmlHttp;5try6{7xmlHttp=newXMLHttpRequest();8}9catch(e)10...
阅读全文
public class GenericList<T>
{
private class Node
{
// T used in non-generic constructor
public Node(T t)
{
next = null;
data = t;
}
private Node next;
public Node Next
{
get { return next; }
set { next = value; }
}
// T as private member data type
private T data;
// T as return type of property
public T Data
{
get { return data; }
set { data = value; }
}
}
private Node head;
// constructor
public GenericList()
{
head = null;
}
// T as method parameter type:
public void AddHead(T t)
{
Node n = new Node(t);
n.Next = head;
head = n;
}
public IEnumerator<T> GetEnumerator()
{
Node current = head;
while (current != null)
{
yield return current.Data;
current = current.Next;
}
}
}
注意看黄色字 那一段的意思大家应该都知道 但让人容易晕,它每加一个元素都是 新加的元素的NextNode指象上一个元素. 在看红色的那段 它就把添加完后的最后一个字段当成了头 然后去找它的NextNode,导至跌代出来的结果是反序的.
然后我就想给Node在加一个属性 Head 代码如下
public class MyCollectionTest<T>
{
private class MyNode
{
private T _Date;
private MyNode _NextNode;
private MyNode _Head;
public T Date
{
set { _Date = value; }
get { return _Date; }
}
public MyNode NextNode
{
set { _NextNode = value; }
get { return _NextNode; }
}
public MyNode Head
{
set { _Head = value; }
get { return _Head; }
}
public MyNode(T a)
{
Date = a;
NextNode = null;
Head = null;
}
}
private MyNode current;
public MyCollectionTest()
{
//
// TODO: 在此处添加构造函数逻辑
//
current = null;
}
public void AddNode(T i)
{
MyNode node = new MyNode(i);
if (current != null)
{
current.NextNode = node;
}
node.Head = current;
current = node;
}
public IEnumerator<T> GetEnumerator()
{
MyNode currentt = current;
while ((currentt.Head != null)||(current.NextNode!=null))
{
yield return currentt.Date;
currentt = currentt.Head;
}
}
}
这里就很奇怪了 当我添加了两个元素
MyCollectionTest<int> abc = new MyCollectionTest<int>();
abc.AddNode(1);
abc.AddNode(2);
foreach (int i in abc)
{
Response.Write(i.ToString());
}
它总是只显示一条出来.. 蓝色字那段在循环第二次的时候就跳出了While 而我在即时窗口发现currentt.NextNode.Date 是有值的 也就是说current.NextNode!=null 应该是成立的 但它不成立 哪位细心人能帮我看看 我实在是找不出原因了!
工作一段时间了,有点想跳曹,一部分为了钱,一部分为了更好的发展,在招聘专区投了份微创的简历,本以为是没戏了,一个星期后给我打了个电话,当时还在办公室,只能跑出去了,结果电话里给我出了些题目,全是关于树的.答对了写,有些也答不上了.
记的有题是说不用递归遍历2叉树.今天有空就写写.
先贴原码.
using System;
using System.Collections.Generic;
using System.Text;

namespace TREE


{
class Program

{
static void Main(string[] args)

{
TreeControl treecontrol = new TreeControl();
TreeNode mytree =treecontrol.CreateTree();
printTree(mytree);
Console.WriteLine("haha");
whileprinttree(mytree);
Console.WriteLine("heihei");
}



/**//// <summary>
/// 递归法
/// </summary>
/// <param name="mytree"></param>
public static void printTree(TreeNode mytree)

{
if (mytree != null)

{
Console.WriteLine(mytree.NodeValue);
printTree(mytree.RightChild);
printTree(mytree.LeftChild);
}
}


/**//// <summary>
/// 非递归法
/// </summary>
/// <param name="mytree"></param>
public static void whileprinttree(TreeNode mytree)

{
Stack<TreeNode> mystack = new Stack<TreeNode>();
mystack.Push(mytree);
while (mystack.Count != 0)

{
TreeNode node = mystack.Pop();
Console.WriteLine(node.NodeValue.ToString());
if (node.RightChild != null)

{
mystack.Push(node.RightChild);
}
if (node.LeftChild != null)

{
mystack.Push(node.LeftChild);
}
}
}
}

}

递归的方法就不用多说了,说下不用递归的方法.
先构造一棵树,然后创建一个堆栈.
如图1

然后访问跟节点1,放入堆栈,接着while判断堆栈是否为空,在把节点1出堆栈

出堆栈后访问两个孩子节点,并把孩子节点入栈.

接着就是把孩子节点出堆栈,在访问孩子节点2,然后把2的孩子节点入堆栈

以下步骤就不说了 给图就明白了.

最后堆栈为空退出循环.整个树就访问完了.
请大家指正.
摘要: js文件Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->1//JScript文件2functionGetXmlRequest()3{4varxmlHttp;5try6{7xmlHttp=newXMLHttpRequest();8}9catch(e)10...
阅读全文
public class GenericList<T>
{
private class Node
{
// T used in non-generic constructor
public Node(T t)
{
next = null;
data = t;
}
private Node next;
public Node Next
{
get { return next; }
set { next = value; }
}
// T as private member data type
private T data;
// T as return type of property
public T Data
{
get { return data; }
set { data = value; }
}
}
private Node head;
// constructor
public GenericList()
{
head = null;
}
// T as method parameter type:
public void AddHead(T t)
{
Node n = new Node(t);
n.Next = head;
head = n;
}
public IEnumerator<T> GetEnumerator()
{
Node current = head;
while (current != null)
{
yield return current.Data;
current = current.Next;
}
}
}
注意看黄色字 那一段的意思大家应该都知道 但让人容易晕,它每加一个元素都是 新加的元素的NextNode指象上一个元素. 在看红色的那段 它就把添加完后的最后一个字段当成了头 然后去找它的NextNode,导至跌代出来的结果是反序的.
然后我就想给Node在加一个属性 Head 代码如下
public class MyCollectionTest<T>
{
private class MyNode
{
private T _Date;
private MyNode _NextNode;
private MyNode _Head;
public T Date
{
set { _Date = value; }
get { return _Date; }
}
public MyNode NextNode
{
set { _NextNode = value; }
get { return _NextNode; }
}
public MyNode Head
{
set { _Head = value; }
get { return _Head; }
}
public MyNode(T a)
{
Date = a;
NextNode = null;
Head = null;
}
}
private MyNode current;
public MyCollectionTest()
{
//
// TODO: 在此处添加构造函数逻辑
//
current = null;
}
public void AddNode(T i)
{
MyNode node = new MyNode(i);
if (current != null)
{
current.NextNode = node;
}
node.Head = current;
current = node;
}
public IEnumerator<T> GetEnumerator()
{
MyNode currentt = current;
while ((currentt.Head != null)||(current.NextNode!=null))
{
yield return currentt.Date;
currentt = currentt.Head;
}
}
}
这里就很奇怪了 当我添加了两个元素
MyCollectionTest<int> abc = new MyCollectionTest<int>();
abc.AddNode(1);
abc.AddNode(2);
foreach (int i in abc)
{
Response.Write(i.ToString());
}
它总是只显示一条出来.. 蓝色字那段在循环第二次的时候就跳出了While 而我在即时窗口发现currentt.NextNode.Date 是有值的 也就是说current.NextNode!=null 应该是成立的 但它不成立 哪位细心人能帮我看看 我实在是找不出原因了!
在IIS6.0下,HTTP请求先是通过HTTP.SYS驱动程序分配到应用程序池请求队列.然后IIS6.0加载aspnet_isapi.dll,在由aspnet_isasp.dll加载CLR.那么将aspx页转换成继承Page类的类,并动态编译成程序集的是哪部分? 是asp.net运行库中的HTTP运行库? 那asp.net运行库在哪里?asp.net运行库是CLR的一部分? CLR不是处理中间语言的吗?
我也是今年刚刚毕业的,我三月份的时候在武汉一家公司上班,汗,刚刚出去不知道天高地厚,以为自己是个人物,结果到了公司发现什么都不会.....从HTML学的.后来是学CSS JS ,在学的ASP,我总觉得那个总监看我不爽,因为我什么都不会,我是通过关系进去的,我自己也觉的这样没意思,就辞职了.人活的要有骨气.我辞了后还是自己学ASP ,后来就自己做了一个网站,以为可以去找公司面试了,结果别人都不要...
在网上的朋友都劝我搞.NET 我也就细腻糊涂的学起了.NET
自己在网上找了个视频教程疯狂的看了两个星期一天12个小时以上,跟着教程把例子都做了一遍,这下以为不错了.能够操作数据库了,以为很了不起了.可以去外面找工作了.哪知道去了杭州工作也不好找.没经验.本来以为自己会的东西很多了,别人一出题目基本上能答上来,一提问题就不会了,我不知道那些东西的原理,只是学着用过....汗.. 后来面试了30家才有一家肯要我,工资是1000啊...疯了.没办法啊.去了后才发现老板是外行,那里没有技术人员,有的都是大学生,都是什么都不会 ,我勉强比他们知道的多一点,结果就把我弄成了项目经理.我刚开始以为做东西不难的,就这样给当上了......一当就没时间学习基础的东西了.就成天的搞什么需求分析.画流程图.我都不知道画了干什么.然后他们就挑里面的毛病,就是文字表达方面的东西....我就这样改呀改,后来他请来了个老程序员来帮忙.别人也没时间.只是来指导一下.就给了我一个框架,李天平的.还有个代码生成器.我就在那里细腻糊涂的弄啊.只知道完成功能,什么都不管....其实别的我也弄不好.你比如说类层次结构啊.那些个类错综复杂,我自己都转不出来.都是用代码生成器弄的.说白了我还不懂OOP...后来越做越不知道干什么了.老板也是.一个老程序员都不请.给我们的工资都是1K.都是刚刚毕业的大学生...我发现不是那么会事了.就想辞职了.终于有一天我鼓足勇气想老板提出了辞职... 然后又开始了找工作.一边学习一边找工作.主要还是方法不对.学了很多东西.很杂,没关联性.我这个人就是性急.什么多想一下完成.好高务远....结果得不常失.以前给我指导程序员让我好好补下基础.看看数据结构.我在外面真是弹尽粮决了.没办法,只好先回家了.在家看了下大学发的那本C语言版的数据结构.发现以前在学校真是没学东西.都不知道我考试是怎么过的.哎.大学啊.学生骗老师,老师骗学生.学校骗家长.家长就寄于我们很大的希望.后来毕业了就成了我们压力....回来后的几天我逛了下我们这个市的一个书籍批发市场..找了些书. C#入门到精通(微软技术从书).正在学习中.一天看三十页(本来有点基础很多东西都知道,现在主要是理解它的来龙去脉).很多东西以前只知道有这么个东西.到底什么时候用一点都不知道了.看了书之后发现这本书不错.把东西讲的都比较清楚.能够理解那些东西是怎么来的....我还买了几本还没机会看.也是微软的.asp.net2.0技术内幕,asp.net2.0高级编程.我现在有些迷茫.就是不知道该怎么去学了. 高手门请留下你们学习.net编程的历程, 是这样吗? 先学习C# .然后学习asp.net. 那关于那些设计类.我该怎么去学?OOP的思想我一点都没有.
我现在的情况是,能够写一些个简单的东西.比如操作数据库的增,删,改.对ASP.NET有基本的了解.基本上了解了C#,(个人来说我很鄙视那些刚刚毕业的学生在简历上就吹自己精通什么精通什么.) 我可以写一个简单的网站.当然只能是几张表的那种谈不上什么类结构设计.会的就是从数据库取出东西.然后在网页上显示.对HTML,CSS,JS方面都能自己手写出来.关于数据结构还在学习中.我看的是C语言版的.C用的是指针.顺序连表,有序连表.堆栈.队列.树行结构,图.
以上是我的经历和我的基本情况.大家能帮我设计一下我学习的道路吗?因为我从毕业了后所有的东西都是自己学的.发现学习方法和路线很是不对.走了很多弯路,效率很低.....做什么事都要有方向.没有方向只能是瞎猫抓老鼠.肯请大师门指点...
问题:inherits与 codebehind 的关系 以及inherits与 codefile 的关系。
inherits好象是继承的意思把。但我理解的还是不是很透彻。初学者。 在
动态加载母版页时一般都要先建一个基类暂时命名为baseMaster ,它有一个
虚属性
class baseMaster
{
string TitleName="";
public virtual String { get {return TitleName;}}
}
然后母版页会继承这个基类
<%@ Master Language="C#" inherits="baseMaster">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
public override String TitleName
{
get { return TitleName; }
}
void Page_Load(Object sender, EventArgs e)
{
string str = Request.QueryString["pages"];
ListItem item = DropDownList1.Items.FindByValue("first");
}
</script>
这里的<script runat="server"></script>就相当于codefile 的文件里的内容,可以这样理解把。
如果我想要用codefile 了 ,我该怎么用?
<%@ Master Language="C#" CodeFile="MasterPage1.master.cs" inherits="baseMaster">
这样写就有问题了。这样写了在MasterPage1.master.cs里就找不到DropDownList1了,是不是MasterPage1.master.cs继承的是baseMaster?
对于 CodeFile 和 inherits 之间的关系不明白。 为什么不写codefile 直接把脚本写在页面里就能访问,
而放到CodeFile就不能找到页面上的控件了?