| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 519 人关注过本帖
标题:看看能不能把这个程序改简单一点 ,或者有其他的思路
只看楼主 加入收藏
mmnh80
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2005-7-1
收藏
 问题点数:0 回复次数:2 
看看能不能把这个程序改简单一点 ,或者有其他的思路

设计链表算法,它包括下列操作:
创建链表
插入结点
删除结点
查找结点
遍历链表
删除链表

要求(请选作):
写出算法,实现创建链表、遍历链表和删除链表的程序。
写出算法并实现,其中的DATA是其它类的对象。
写出算法并实现,其中的DATA是一个嵌套类的对象。

using System;
using System.Collections;

namespace exercises3_1
{
/// <summary>
/// </summary>
class ListNode:IEnumerable,IEnumerator
{
//声明节点
Node firstNode,lastNode,currentNode;
int _count = 0;

/// <summary>
/// 删除一个节点
/// </summary>
private void delete()
{
if(currentNode.Equals(firstNode))
firstNode = firstNode.nextNode;
else
{
Node previous = firstNode;
while(previous.nextNode != currentNode)
{
previous = previous.nextNode;
}
previous.nextNode = currentNode.nextNode;
}
_count--;
}
public void deleteall()
{
currentNode=null;
Console.WriteLine("链表为空");
}

/// <summary>
/// 获得一个节点
/// </summary>
/// <param name="key">索引Key</param>
/// <param name="obj">节点的值</param>
/// <returns>返回一个节点</returns>
private Node getNode(double Key,object obj)
{
Node newNode = new Node();
newNode.Value = obj;
newNode.Key = Key;
_count++;
return newNode;
}

/// <summary>
/// 节点索引
/// </summary>
public object this[int index]
{
get
{
Reset();
for(int i = 0;i <= index;i++)
currentNode = currentNode.nextNode;
Node getvalue = currentNode;
Reset();
return getvalue.Value;
}
set
{
Reset();
for(int i = 0;i <= index;i++)
currentNode = currentNode.nextNode;
if(!currentNode.Value.Equals(value))
currentNode.Value = value;
Reset();
}
}

/// <summary>
/// 一次重载节点索引
/// </summary>
public object this[double Key]
{
get
{
Reset();
while(currentNode.Key != Key)
currentNode = currentNode.nextNode;
Node getvalue = currentNode;
Reset();
return getvalue.Value;
}
set
{
Reset();
while(currentNode.Key != Key)
currentNode = currentNode.nextNode;
if(!currentNode.Value.Equals(value))
currentNode.Value = value;
Reset();
}
}

/// <summary>
/// 增加一个节点
/// </summary>
/// <param name="key">索引Key</param>
/// <param name="obj">节点的值</param>
public void Add(double Key,object obj)
{
Node newNode = getNode(Key,obj);

if(firstNode == null)
{
firstNode = lastNode = newNode;
Reset();
}
else
{
lastNode.nextNode = newNode;
lastNode = newNode;
}

}

/// <summary>
/// 移除一个节点
/// </summary>
/// <param name="obj">要移除的节点的值</param>
public void removeNode(object obj)
{
Reset();
while(MoveNext())
{
if(currentNode.Value.Equals(obj))
{
delete();
Reset();
return;
}
}
}

/// <summary>
/// 移除一个节点
/// </summary>
/// <param name="Key">要移除的节点的Key索引</param>
public void removeNodeKey(double Key)
{
Reset();
while(MoveNext())
{
if(currentNode.Key == Key)
{
delete();
Reset();
return;
}
}
}

/// <summary>
/// 返回节点总数
/// </summary>
public int Count
{
get
{
return _count;
}
}


/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
Console.WriteLine("开始创建链表,请先输入链表长度值");
double q;
q=Double.Parse(Console.ReadLine());
ListNode ln = new ListNode();
for(int x=1;x<=q;x++)
{
Console.WriteLine("请输入第{0}个值",x);
string aa;
aa=Console.ReadLine();
ln.Add(x,aa);
}
Console.WriteLine("现在遍历链表");
foreach(Node no in ln)
{
Console.Write(no.Value + " ");
}
Console.WriteLine("现在删除链表");
ln.deleteall();


// TODO: 在此处添加代码以启动应用程序
//
}
#region IEnumerable 成员

public IEnumerator GetEnumerator()
{
// TODO: 添加 ListNode.GetEnumerator 实现
return this;
}

#endregion

#region IEnumerator 成员

public void Reset()
{
currentNode = new Node();
currentNode.nextNode = firstNode;
// TODO: 添加 ListNode.Reset 实现
}

public object Current
{
get
{
// TODO: 添加 ListNode.Current getter 实现
return currentNode;
}
}

public bool MoveNext()
{
currentNode = currentNode.nextNode;
if(currentNode == lastNode.nextNode)
{
Reset();
return false;
}
else
return true;
// TODO: 添加 ListNode.MoveNext 实现
}

#endregion
}

class Node
{
public Node nextNode;
double _key;
object _value;

/// <summary>
/// 设置或返回节点的值
/// </summary>
public object Value
{
get
{
return _value;
}
set
{
if(!value.Equals(_value))
_value = value;
}
}

/// <summary>
/// 置或返回索引值
/// </summary>
public double Key
{
get
{
return _key;
}
set
{
if(_key != value)
_key = value;
}
}
}
}

搜索更多相关主题的帖子: 思路 
2006-04-25 10:22
月夜枫华
Rank: 4
等 级:贵宾
威 望:12
帖 子:437
专家分:42
注 册:2006-1-2
收藏
得分:0 
没有什么多余的地方啊,已经很简洁了

2006-04-26 03:34
十一月天
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:10
帖 子:3030
专家分:0
注 册:2006-4-19
收藏
得分:0 
认真点看,不难的

当头晕的时候我终于明白了什么叫爱情。
2006-04-26 08:56
快速回复:看看能不能把这个程序改简单一点 ,或者有其他的思路
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015996 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved