데이터 구조 - 단일 체인 시트 의 생 성, 찾기, 삽입, 삭제 작업

19725 단어 데이터 구조
/ / 싱글 체인 시트
#include 
#include 

typedef struct LNode{
	int data;			//    
	struct LNode *next;		//    
}LNode,*LinkList;
 
 //             :
 LinkList List_HeadInsert(LinkList &L){
 	LNode *s;int x;
 	L=(LinkList)malloc(sizeof(LNode));	
 	L->next=NULL;
 	scanf("%d",x);
 	while(x!=-1)
 	{
 		s=(LNode*)malloc(sizeof(LNode));
 		s->data=x;
 		s->next=L->next;
 		L->next=s;
 		scanf("%d",x);
	 }
	 return L;
	  } 
	  

//             :
LinkList List_TailInsert(LinkList &L){
	LNode *s,*r;int x;
	L=(LinkList)malloc(sizeof(LNode));
	L->next=NULL;
	r=L;
	scanf("%d",x);
	while(x!=-1){
		s=(LNode*)malloc(sizeof(LNode));
		s->data=x;
		s->next=r->next;
		r->next=s;
		r=s;
		scanf("%d",x);
	}
	
	return L;
	
}    

//        
LNode *GetElem(LinkList L,int i){
	if(i=0){
		return L;
	}
	if(i<0){
		return NULL;
	}
	int j=1;
	LNode *p=L->next;
	while(j<i&&p){
		p=p->next;
		j++;
	}
	return p;
	
} 
//      
LNode *LocateElem(LinkList L,int e){
	LNode *p=L->next;
	while(p&&p->data!=e){
		p=p->next;
	}
	return p;
	}
	
//       (  )(   i-1    
LinkList Insert1(LinkList L,int i,int e){
	LNode *p,*s;
	s=(LNode*)malloc(sizeof(LNode));
	p=GetElem(L,i-1);
	s->next=p->next;
	p->next=s;
	s->data=e;
	return L;
}
//       (  )
LinkList Insert2(LinkList L,int i,int e){
	LNode *p,*s;
	p=GetElem(L,i-1);
	s=(LNode*)malloc(sizeof(LNode));
	s->data=e;
	s->next=p->next;
	p->next=s;
	int temp=p->data;
	p->data=s->data;
	s->data=temp; 
	return L;
}
//      
LinkList Delete(LinkList &L,int i){
	LNode *p,*q;
	p=GetElem(L,i-1);
	q=p->next;
	p->next=q->next;
	free(q);
}
 

//     L,      ?
LinkList Inverse(LinkList L){
	LinkList L1;
	L1=(LinkList)malloc(sizeof(LNode));
	L1->next=NULL;
	LNode *s,*t;
	int x;
	t=L;
	while(t->next){
		t=t->next;
		x=t->data;
		s=(LNode*)malloc(sizeof(LNode));
 		s->data=x;
 		s->next=L1->next;
 		L1->next=s;
	}
	
	return L1;
} 

좋은 웹페이지 즐겨찾기