1.3 단일 체인 표 의 디자인 과 실현
                                            
 4306 단어  데이터 구조
                    
//    :DevC++
//        
#include 
#include 
#define NULL 0
typedef int ElemType;//           
//         
typedef struct LNode
{
	ElemType data;//   
	struct LNode *next;//   
}LNode,*LinkList;
/****---------------------------------------------------****/
//         (            )
//   :CreateOne(int n)
//  :  (  )int n,         
//  :          
//   : LNode*        ,          
/****--------------------------------------------------****/
LNode* CreateOne(int n)
{
	int i;
	LNode *head;//       
	LNode *p;//       
	//           
	head = (LNode*)malloc(sizeof(LNode));
	head->next = NULL;
	printf("Pleade input the data for LinkList Nodes:
");
	for(i = n; i > 0; i--)
	{
		p = (LNode*)malloc(sizeof(LNode));//        ,       
		scanf("%d",&p->data); //     
	    //        
		p->next = head->next;
		head->next = p;
	}
	return head;//       ,           
}
/****---------------------------------------------------------****/
//         (      )
//   : CreateTwo(LNode*head, int n)
//  :   (  )LNode*head        
//        (  )int n,         
//  :           
//   :   
/****--------------------------------------------------------****/
void Createtwo(LinkList &head, int n)
{
	int i;
	LNode *p;//       
	//           
	head = (LinkList)malloc(sizeof(LNode));
	head->next = NULL;
	printf("Pleade input the data for LinkList Nodes:
");
	 for(i = n; i > 0; i--)
	 {
	 	p = (LNode*)malloc(sizeof(LNode));//        ,       
		scanf("%d", &p->data);//     
		//        
		p->next = head->next;
		head->next = p;
	}
}
/****--------------------------------------------------****/
//   :InsertLNode(LNode *L, int i, ElemType e)
//  :  (  )LNode*L,        L
//       (  )int i    
//       (  )ElemType e    
//  :            
//   : int ,  1      ,0    
/****-------------------------------------------------****/
int InsertNode(LNode *L, int i, int e)
{
	LNode *p = L;//              
	int j = 0;
	//       ,  p   i   
	while(p&&j < i-1)
	{
		p = p->next;
		++j;
	}
	//        
	if(!p||j > i-1)
	{
		printf("Error!The location os illegal!");
		return 0;
	}
	LNode *s;
	s = (LNode*)malloc(sizeof(LNode));//     
	s->data = e;//     
	//    
	s->next = p->next;
	p->next = s;
	return 1;
}
/****------------------------------------------------****/
//   :DeleteNode(LinkList &L, int i, int &e)
//  :  (  )LinkList &L,      L   
//       (  )int i    
//       (  )ElemType &e          
//  :            
//   :ElemType           
/****-----------------------------------------------****/
ElemType DeleteNode(LinkList &L, int i, int &e)
{
	LNode *p;
	p = L;    //       i      
	LNode*q;   //         
	int j = 0;
	//       ,  p   i   
	while(p->next && j < i-1)
	{
		p = p->next;
		++j;
	}
	//         
	if(!p||j>i-1)
	{
		printf("element is not exist!");
		return 0;
	}
	q = q->next;
	p->next = q->next;//   i   
	e = q->data;
	free(q);
	return(e);//          
}
/****------------------------------------------------------------------*****/
//   :DisplayList(LinkList &L, int i, ElemType &e)
//  :  (  )LinkList &L,      L   
//       (  )int i    
//       (  )ElemType &e          
//  :             
//   : 
/****------------------------------------------------------------------****/
void DisplayList(LinkList &L)
{
	LNode *p;
	p = L->next;
	while(p!= NULL)
	{
		printf("%d ",p->data);
		p = p->next;
	}
	printf("
");
}
//*******************    *****************************//
int main()
{
	LNode *L1;
	int NodeNum;
	printf("Please input the Init LinkNode Number:
");
	scanf("%d",&NodeNum);
	L1 = CreateOne(NodeNum);
	//LNode*L2;
	//CreateTwo(L2,NodeNum);//         L2  
	//        
	printf("the current L1 is:");
	DisplayList(L1);
	//  
	int result;//          ,    result    
	result = InsertNode(L1,2,88);
	if(result)
	{
		printf("success to insert!
");
	}
	//        
	printf("the current L1 is");
	DisplayList(L1);
	return 0;
}
  이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.