예제 #1
0
		/// <summary>  
		/// 在第k个元素之后插入x  
		/// </summary>  
		/// <param name="k"></param>  
		/// <param name="x"></param>  
		/// <returns></returns>  
		public LinkList Insert( int k, string x )  
		{  
			if( k<0 )  
				return null;  
			ListNode pNode = first;  //pNode将最终指向第k个结点  
			for( int index = 1; index<k && pNode != null; index++ )  
				pNode = pNode.next;  
			if( k>0 && pNode == null )  
				return null;//不存在第k个元素  
			ListNode xNode = new ListNode();  
			xNode.data = x;  
			if(k>0)  
			{  
				//在pNode之后插入  
				xNode.next = pNode.next;  
				pNode.next = xNode;  
			}  
			else  
			{  
				//作为第一个元素插入  
				xNode.next = first;  
				first = xNode;  
			}  
			return this;  
		}  
예제 #2
0
		private ListNode first;   //第一个结点  
		public LinkList(){  
			first = null;  
		}  
예제 #3
0
		// 清空链表  
		public void Clear()  
		{  
			first = null;  
		}  	
예제 #4
0
		/// <summary>  
		/// 删除第k个元素,并用x返回其值  
		/// </summary>  
		/// <param name="k"></param>  
		/// <param name="x"></param>  
		/// <returns></returns>  
		public LinkList Delete( int k)  
		{  
			//如果不存在第k个元素则引发异常  
			if( k<1 || first == null )  
				return null;  
			ListNode pNode = first;  //pNode将最终指向第k个结点  
			//将pNode移动至第k个元素,并从链表中删除该元素  
			if( k == 1 ) //pNode已经指向第k个元素  
				first = first.next;  //删除之  
			else  
			{  
				//用qNode指向第k-1个元素  
				ListNode qNode = first;  
				for( int index=1; index< k-1 && qNode != null; index++ )  
					qNode = qNode.next;  
				if( qNode == null || qNode.next == null )  
					return null;//不存在第k个元素  
				pNode = qNode.next; //pNode指向第k个元素  
				qNode.next = pNode.next; //从链表中删除第k个元素    
			}  
			return this;  
		}