⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 list.cs

📁 用C#实现线性表和多项式相加功能
💻 CS
字号:

namespace List
{
	//链表类
	public class Clist
	{
		protected ListNode Head;   //头结点
		protected ListNode p;      //当前结点
		
		protected int ListLen;
		public Clist()
		{
			Head=null;
			p=null;
			ListLen=0;
		}
		~Clist(){}
		/*public ListNode DestoryList()
		{
		  
		}*/
		/// <summary>
		/// 是否在链头
		/// </summary>
		public bool IsBof()
		{
			if (Head==p)
			{
				return true;
			}
			return false;
		}
		/// <summary>
		///是否在链尾
		/// </summary>
		public bool IsEof()
		{
			if(p.Next==null)
				return true;
			return false;
		}
		/// <summary>
		/// 清空链表
		/// </summary>
		public void ClearList() 
		{
			Head=null;
			p=null;
			ListLen=0;
			return;
		}
		/// <summary>
		/// 链表是否为空
		/// </summary>
		public bool ListEmpty()
		{
			if(ListLen==0)
				return true;
			return false;
		}

		/// <summary>
		/// 链表长度
		/// </summary>
		public int ListLength
		{
			get{return ListLen;}
		}
		/// <summary>
		/// 指针后移
		/// </summary>
		public void MoveNext()
		{
			if(!IsEof())
			{
				p=p.Next;
			}
			return;
		}
		/// <summary>
		/// 指针前移
		/// </summary>
		public void MovePrev()
		{
			if(!IsBof())p=p.Previous;
			return;
		}
		/// <summary>
		/// 指针移到表头
		/// </summary>
		public void MoveFirst()
		{
			p=Head;
			return;
		}
		/// <summary>
		/// 返回指定位置结点的值
		/// </summary>
		public int GetElem(int i)
		{
			
			ListNode move;
			if(!ListEmpty() && i>=1 && i<=ListLength)
			{
				int j;
				move=Head;
                for(j=1;j<i;j++)
				//while(move!=null)
				{
					move=move.Next;
				}
				return move.Value;
			}
			return 0;
		}
		//public int PriorElem(ListNode ThisList,int cur_e){}
		//public int NextElem(ListNode ThisList,int cur_e){}
		/// <summary>
		/// 添加新结点
		/// </summary>
		public void AppendNode(int e)
		{
			ListNode NewNode=new ListNode(e);
			if(ListEmpty())
			{
				Head=NewNode;
				p=NewNode;
			}
			else
			{
				p.Next=NewNode;
				NewNode.Previous=p;
				p=NewNode;
			}
			ListLen++;
			return;
		}
		/// <summary>
		/// 前插结点
		/// </summary>
		public void ListInsert(int i,int e)
		{
			ListNode NewNode=new ListNode(e);
			ListNode q;
			ListNode move;
			int j;
			if(!ListEmpty() && i>=1 && i<=ListLength) 
			{
				if(i==1)
				{
					Head.Previous =NewNode;
					NewNode.Next =Head;
					Head=NewNode;
					p=NewNode;
					ListLen++;
				}
				else
				{
					move=Head;
					for(j=1;j<i;j++)
						//while(move.Next!=null)
					{
						move=move.Next;
					}
					q=move.Previous;
					NewNode.Next =move;
					move.Previous =NewNode;
					q.Next =NewNode;
					NewNode.Previous =q;
					move=NewNode;
					p=NewNode;
					ListLen++;
				}
				
				
			}
			else
			{
				Head=NewNode;
				p=NewNode;
			}
			return;

		}
		/// <summary>
		/// 删除指定位置的结点
		/// </summary>
		public void ListDelete(int i)
		{
			ListNode q;
			int j;
			if(!ListEmpty() && i>=1 && i<=ListLength)
			{
				if(i==1)
				{
					q=Head.Next;
					q.Previous =null;
					Head.Next=null;
					Head=q;
				}
				else
				{
					if(i<ListLength)
					{
						MoveFirst();
						for(j=1;j<=i;j++)
							MoveNext();
						q=p.Next;
						q.Previous =p.Previous;
						p.Previous.Next=q;
						p=q;
					}
					else
					{
						MoveFirst();
						for(j=1;j<=i;j++)
							MoveNext();
						q=p.Previous ;
						q.Next=null;
						p=q;
					}
                  
				}
				ListLen--;
			}
		}
		/// <summary>
		/// 判断链表中是否存在e
		/// </summary>
		public bool Isin(int e)
		{
			bool bl=false;
			ListNode move;
			
			move=Head;
			while(move!=null)
			//for(i=1;i<=ListLength;i++)
			{
				if(move.Value==e)
				{
					bl=true;
					break;
				}
				else
				{
					move=move.Next;
				}
			}
									
			return bl;
		}
		/// <summary>
		/// 打印链表的所有元素
		/// </summary>
		public string PrintList()
		{
			
			ListNode move;
			string strtext="";
			move=Head;
			while(move!=null)
			{
                 strtext=strtext + move.Value.ToString() + ",";
				move=move.Next;
			}
			
			return strtext;
		}
		/// <summary>
		/// 取当前指针的值(多项式的指数)
		/// </summary>
		public int ThisValue()
		{
			if(!ListEmpty())
				return p.Value;
			return 0;
			
		}
		/// <summary>
		/// 设置当前指针所在的元素值(多项式指数)
		/// </summary>
		public void SetValue(int e)
		{
			if(p!=null)p.Value=e;
			return;
		}
		/// <summary>
		/// 设置当前指针所在的系数值
		/// </summary>
		public void SetCoef(float c)
		{
			if(p!=null)p.Coef=c;
			return;
		}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -