데이터 구조의 단일 체인 시트 (1)

저장 구조
typedef struct LNode
{
	int	data;
	struct LNode *next;
}LNode, *LinkList;

2. 기본 조작
1. 초기 화
//           
int InitList(LNode *&L)
{
	L = (LNode *)malloc(sizeof(LNode));
	if (NULL == L)
	{
		printf("Memory allocate failed
"); return 0; } L->next = NULL; //L->data = 0; return 1; }

2. 싱글 체인 리스트 폐기
void DestoryList(LNode *&L)
{
	//LNode *p;
	//while(L)
	//{	
	//	p = L;
	//	L = L->next;
	//	free(p);
	//}

	LNode*p, *q;
	p = L;
	while(NULL != p)
	{
		q = p->next;
		free(p);
		p = q;
	}

	L = NULL;
}

3. 단일 체인 시 계 를 빈 시계 로 설정 합 니 다.
void ClearList(LNode *&L)
{
	DestoryList(L->next);

	//LNode *p, *q;
	//p = L->next;
	//while (p)
	//{
	//	q = p->next;
	//	free(p);
	//	p = q;
	//}

	L->next = NULL;
}

4. 지정 한 위치 에 요소 삽입
//           L   i         e
//1<= i <=(   +1)
int ListInsert(LNode *&L, int i, int e)
{
	LNode *p, *s;
	
	//   i-1   
	p= L;
	int j = 1;
	while(p && j < i )
	{
		p = p->next;
		j++;
	}

	if (!p || j > i)//i<1 or i>(  +1)
		return 0;

	s = (LNode*)malloc(sizeof(LNode));
	s->data = e;
	s->next = p->next;//  
	p->next = s;
	return 1;
}

5. 지정 한 위치 에서 요소 삭제
//           L ,   i      ,  e    
//1<=i<=   
int ListDelete(LNode *&L, int i, int &e)
{
	LNode *p, *q;

	//   i   ,  p     
	p= L;
	int j = 1;
	while(p->next && j < i)
	{
		p = p->next;
		j++;
	}

	if(!(p->next) || j > i)
		return 0;//       

	q = p->next;//      
	e = q->data;
	p->next = q->next;
	free(q);
	return 1;
}

6. 단일 체인 테이블 i 번 째 노드 의 값 가 져 오기
int GetElem(LNode*L, int i, int &e)
{
	LNode *p = L->next;//p      
	int j = 1;

	while(p && j < i)
	{
		p = p->next;
		j++;
	}

	if(!p || j > i)
		return 0;

	e = p->data;
	return 1;
}

7. 값 영역 이 e 인 노드 가 단일 체인 표 에 있 는 위 치 를 찾 습 니 다.
int LocateElem(LNode*L, int e)
{
	LNode *p = L->next;
	int i = 0;
	while(p)
	{
		i++;
		if(p->data == e)
			return i;
		p = p->next;
	}
	return 0;
}

8. 싱글 체인 시트 옮 겨 다 니 기
void ListTraverse(LNode*L)
{
	LNode*p = L->next;
	while(p)
	{
		printf("->%d", p->data);
		p = p->next;
	}
	putchar('
'); }

9. 단일 체인 시트 의 길 이 를 가 져 옵 니 다.
int ListLength(LNode *L)
{
	int i = 0;
	LNode *p = L->next;//    
	while(p)
	{
		i++;
		p = p->next;
	}
	return i;
}

다음 편: 데이터 구조의 단일 체인 표 (2)

좋은 웹페이지 즐겨찾기