[내장 형 Linux C 프로 그래 밍] 데이터 구조의 링크

1772 단어
링크 표 는 선형 표 의 링크 저장 형식 이다.선형 표 의 저장 공간 은 유한 하지만 체인 표 의 저장 공간 은 무한 하 다.
표 의 모든 요 소 는 노드 노드 노드 로 구성 되 고 각 노드 는 int data 와 같은 데이터 구역 으로 나 뉜 다.  struct struct_name *next。
하나의 링크 의 첫 번 째 노드 는 두 노드 이 고 데 이 터 를 저장 하지 않 으 며 헤드 포인터 로 사용 하면 다음 데 이 터 를 저장 하 는 노드 를 가리킨다.
링크 정의
typedef char ListData;

typedef struct node {             //        
    ListData     data;	      //     
    struct node   * link;            //    
} ListNode;

typedef ListNode * LinkList;   

LinkList first;                           

링크 삽입 노드
int InsertLink(Node *l, int p, DataType e)
{
	Node *q = l;
	int j = 1;

	if (NULL == l)               //    
	{
		return FAILURE;
	}

	if (p > LengthLink(l) + 1)           //2、      
	{
		return FAILURE;
	}

	while (j < p)          //              
	{
		q = q->next;
		j++;
	}

	if (j > p)             //        (  q    p=0,  )
	{
		return FAILURE;
	}

	Node *n = (Node *)malloc(sizeof(Node));  //       
	if (NULL == n)
	{
		return FAILURE;
	}
	
	n->data = e;
	n->next = q->next;
	q->next = n;

	return SUCCESS;
}

노드 삭제
int DeleteLink(Node *l, int p)
{
	DataType e;
	Node *q = l;
	int j = 1;

	if (NULL == l)
	{
		return FAILURE;
	}

	if (p > LengthLink(l))          //8、      
	{
		return FAILURE;
	}

	while (j < p)          //              
	{
		q = q->next;
		j++;
	}

	if (j > p)             //        (  q    p=0,  )
	{
		return FAILURE;
	}

	Node *n = q->next;
	e = n->data;
	q->next = n->next;
	free(n);

	return e;
}

체인 시 계 를 소각 하 다.
int DestroyLink(Node **l)
{
	if (NULL == (*l) || (*l)->next != NULL)
	{
		return FAILURE;
	}

	free(*l);
	(*l) = NULL;
	
	return SUCCESS;
}

좋은 웹페이지 즐겨찾기