단일 체인 시트 의 수립 과 삭제, 검사 코드 및 설명

3121 단어 데이터 구조
//---           ----
typedef struct LNode
{
	ElemType data;
	struct LNode *next;
}LNode,*LinkList;

//1.   
int Initlist(LinkList L)
{
	L=NULL;
	return OK;
}

//   (    )
int Initlist(LinkList L)
{
	L=(LNode*)malloc(sizeof(Lnode));//          
	L->next=NULL;
	return OK;
}

//   
int length_L(LinkList L)
{
	i=0;
	p=L->next;//        p
	while(p)// p      ,      
	{
		i++;
		p=p->next;
	}
	return i;
}
//3.   I   

Status GetElem_L(LinkList L,int i,ElemType &e)
		//L             
	{
		p=L->next;//p         
		j=1;
		while(p&&jnext;// p    
			j++;// J   1,  J=I
		}
		if(!p||j>i)//          ,  ERROR
			return ERROR;
		e=p->data;//        e,    。
		return OK;
	}

	//4. p            

	q=(LinkList)malloc(sizeof(LNode))

	q->data=x;//     
	q->next=p->next;//(1)  
	p->next=q;//(2)

	//5.  :         L  I         e
	Status Listinsert_L(LinkList &L,int i,ElemType e)
	{
		p=L;
		j=0;
		while(p&&jnext;
			j++;
		}

		if(!p||j>i-1)//             I   ,    ERROR
		return ERROR;
		s=(LinkList)malloc(sizeof(LNode));//            
		s->data=e;
		s->next=p->next;//(1)    
		p->next=s;//(2)
		return OK;
	}

	//6.  :  P         
	//                ,        
Status ListDelete_L(LinkList &L,int i,ElemType &e)
//           L ,   i   ,  e    
{
	p=L;
	j=0;
	while(p->next&&jnext;
			j++;
		}

	if(!(p->next)||j>i-1)
	return ERROR;
	p->next=p->next->next;//         
	e=q->data;//       e
	free(q);//          
	return OK;
}
//7.  :       ,          ,      
//   :    ,                   。
//           。(       )

//     
L.(LinkList)malloc(sizeof(LNode));
L->next=NULL;
r=L;//  r       ,      

//      ,    :
p=(LinkList)malloc(sizeof(LNode));//            
scanf(&p->data);//    
p->next=NULL;//         
r->next=p;//  r       ,    
r=r->next;

//   :    ,

//     
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;

//      ,    
p=(LinkList)malloc(sizeof(LNode));//          
scanf(&p->data);//    
p->next=L->next;//                   
L->next=p;//                

//    :(  )

void CreateList_L(LinkList &L,int n)
{
	L=(LinkList)malloc(sizeof(LNode));//          
	L->next=NULL;
	for(i=n;i>0;i--)
	  {
	       p=(LinkList)malloc(sizeof(LNode));//          
		   scanf(&p->data);//    
		   p->next=L->next;//             ,          
		   L->next=p;//           
	  }
}

//        
//     La Lb          

void MergeList_L(LinkList &La,LinkList &Lb,LinkList &Lc)
{
	pa=La->next;//    La Lb
	pb=Lb->next;
	Lc=pc=La;// La           
	while(pa&&pb)//           
	{
		if(pa->data<=pb->data)//  La->data<=pb->data,    La  
		{
			pc->next=pa;// La  ,    La      Lb  
			pc=pa;//         La
			pa=pa->next;
		}
		else
		{
			pc->next=pb;
			pc=pb;
			pb=pb->next;
		}
		pc->next=pa?pa:pb;//   ,  LA        ,    LB  
		//       
		//if(pa)
		//pc->next=a;
		//else  pc->next=pb

		free(Lb);//  Lc  LA     ,      LB
	}
}

좋은 웹페이지 즐겨찾기