900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > python列表输出学生姓名学号链表_建立一个链表 记录学生的姓名 学号和成绩

python列表输出学生姓名学号链表_建立一个链表 记录学生的姓名 学号和成绩

时间:2019-08-26 23:31:17

相关推荐

python列表输出学生姓名学号链表_建立一个链表 记录学生的姓名 学号和成绩

展开全部

public class StudentPerson

{

///

/// 实例化一个新的学生e69da5e887aa3231313335323631343130323136353331333231393661

///

public StudentPerson(int studentID, string studentName ,string studentPoint)

{

pri_ID = studentID ;

pri_Name = studentName ;

pri_Point = studentPoint ;

}

public StudentPerson()

{}

private int pri_ID ;

private string pri_Name;

private decimal pri_Point ;

///

/// 学生学号

///

public int ID

{

get

{

return pri_ID ;

}

set

{

pri_ID = value ;

}

}

///

/// 学生姓名

///

public string Name

{

get

{

return pri_Name ;

}

set

{

pri_Name = value ;

}

}

///

/// 学生成绩

///

public decimal Point

{

get

{

return pri_Point ;

}

set

{

pri_Point = value ;

}

}

}

///

/// 结点类.

///

public class ListNode

{

public ListNode(StudentPerson NewValue)

{

Value=NewValue;

}

///

/// 前一个

///

public ListNode Previous;

///

/// 后一个

///

public ListNode Next;

///

/// 值

///

public StudentPerson Value;

}

///

/// 学生链表。

///

public class StudentList

{

public StudentList()

{

//构造函数

//初始化

ListCountValue=0;

Head=null;

Tail=null;

}

///

/// 头指针

///

private ListNode Head;

///

/// 尾指针

///

private ListNode Tail;

///

/// 当前指针

///

private ListNode Current;

///

/// 链表数据的个数

///

private int ListCountValue;

///

/// 尾部添加数据

///

public void Append(StudentPerson DataValue )

{

ListNode NewNode=new ListNode( DataValue);

if (IsNull())

//如果头指针为空

{

Head=NewNode;

Tail=NewNode;

}

else

{

Tail.Next =NewNode;

NewNode.Previous =Tail;

Tail=NewNode;

}

Current=NewNode;

//链表数据个数加一

ListCountValue+=1;

}

///

/// 删除当前的数据

///

public void Delete()

{

//若为空链表

if ( ! IsNull())

{

//若删除头

if (IsBof())

{

Head=Current.Next ;

Current = null ;

Current=Head;

Head.Previous = null ;

ListCountValue-=1;

return;

}

//若删除尾

if (IsEof())

{

Tail=Current.Previous ;

Current = null ;

Current=Tail;

Tail.Next = null ;

ListCountValue-=1;

return;

}

//若删除中间数据

Current.Previous.Next =Current.Next ;

Current.Next.Previous =Current.Previous ;

Current=Current.Previous ;

ListCountValue-=1;

return;

}

}

///

/// 向后移动一个数据

///

public bool MoveNext()

{

if (! IsEof())

{

Current=Current.Next ;

return true ;

}

else

{

return false ;

}

}

///

/// 向前移动一个数据

///

public bool MovePrevious()

{

if (!IsBof())

{

Current=Current.Previous ;

return true ;

}

else

{

return false ;

}

}

///

/// 移动到第一个数据

///

public void MoveFirst()

{

Current=Head;

}

///

/// 移动到最后一个数据

///

public void MoveLast()

{

Current=Tail;

}

///

/// 判断是否为空链表

///

public bool IsNull()

{

if (ListCountValue==0)

return true;

return false;

}

///

/// 判断是否为到达尾部

///

public bool IsEof()

{

if( Current ==Tail )

return true;

return false;

}

///

/// 判断是否为到达头部

///

public bool IsBof()

{

if( Current ==Head)

return true;

return false;

}

///

/// 得到当前指针的学生信息

///

public StudentPerson GetCurrentValue()

{

return Current.Value ;

}

///

/// 取得链表的数据个数

///

public int ListCount

{

get

{

return ListCountValue;

}

}

///

/// 清空链表

///

public void Clear()

{

MoveFirst();

while (!IsNull())

{

//若不为空链表,从尾部删除

Delete();

}

}

///

/// 查出是否有此学生,如果有返回信息,没有返回空值

///

public StudentPerson SelectStudent(string Name)

{

int NowStudent = GetCurrentValue().ID ;

if(GetCurrentValue().Name == Name)

{

return GetCurrentValue() ;

}

else

{

while(SelectName != GetCurrentValue().Name)

{

if(!MoveNext())

{

MoveFirst() ;

}

if(NowStudent == GetCurrentValue().ID)

{

return null ;

}

}

return GetCurrentValue() ;

}

}

///

/// 在当前位置前插入数据

///

public void Insert(StudentPerson DataValue)

{

ListNode NewNode=new ListNode (DataValue);

if(IsNull())

{

//为空表,则添加

Append(DataValue);

return;

}

if (IsBof())

{

//为头部插入

NewNode.Next =Head;

Head.Previous =NewNode;

Head=NewNode;

Current=Head;

ListCountValue+=1;

return;

}

//中间插入

NewNode.Next =Current;

NewNode.Previous =Current.Previous ;

Current.Previous.Next =NewNode;

Current.Previous =NewNode;

Current=NewNode;

ListCountValue+=1;

}

///

/// 按学号升序插入

///

public void InsertAscendingByID(StudentPerson InsertValue)

{

//参数:InsertValue 插入的数据

//为空链表

if (IsNull())

{

//添加

Append(InsertValue);

return;

}

//移动到头

MoveFirst();

if ((InsertValue.ID

{

//满足条件,则插入,退出

Insert(InsertValue);

return;

}

while(true)

{

if (InsertValue.ID

{

//满足条件,则插入,退出

Insert(InsertValue);

break;

}

if (IsEof())

{

//尾部添加

Append(InsertValue);

break;

}

//移动到下一个指针

MoveNext();

}

}

///

/// 按学号降序插入

///

public void InsertUnAscendingByID(StudentPerson InsertValue)

{

//参数:InsertValue 插入的数据

//为空链表

if (IsNull())

{

//添加

Append(InsertValue);

return;

}

//移动到头

MoveFirst();

if (InsertValue.ID>GetCurrentValue().ID)

{

//满足条件,则插入,退出

Insert(InsertValue);

return;

}

while(true)

{

if (InsertValue.ID>GetCurrentValue().ID)

{

//满族条件,则插入,退出

Insert(InsertValue);

break;

}

if (IsEof())

{

//尾部添加

Append(InsertValue);

break;

}

//移动到下一个指针

MoveNext();

}

}

///

/// 按成绩升序插入

///

public void InsertAscendingByPoint(StudentPerson InsertValue)

{

//参数:InsertValue 插入的数据

//为空链表

if (IsNull())

{

//添加

Append(InsertValue);

return;

}

//移动到头

MoveFirst();

if ((InsertValue.Point

{

//满足条件,则插入,退出

Insert(InsertValue);

return;

}

while(true)

{

if (InsertValue.Point

{

//满足条件,则插入,退出

Insert(InsertValue);

break;

}

if (IsEof())

{

//尾部添加

Append(InsertValue);

break;

}

//移动到下一个指针

MoveNext();

}

}

///

/// 按成绩降序插入

///

public void InsertUnAscendingByPoint(StudentPerson InsertValue)

{

//参数:InsertValue 插入的数据

//为空链表

if (IsNull())

{

//添加

Append(InsertValue);

return;

}

//移动到头

MoveFirst();

if (InsertValue.Point>GetCurrentValue().Point)

{

//满足条件,则插入,退出

Insert(InsertValue);

return;

}

while(true)

{

if (InsertValue.Point>GetCurrentValue().Point)

{

//满族条件,则插入,退出

Insert(InsertValue);

break;

}

if (IsEof())

{

//尾部添加

Append(InsertValue);

break;

}

//移动到下一个指针

MoveNext();

}

}

}

本回答由提问者推荐

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。