单链表的头插法和尾插法

#include "linklist4.h"
#include <stdlib.h>

int Linklist_into(Link **head)
{
	*head = (Link *) malloc (sizeof(Link));

	if(*head == NULL)
	{
		return FALSE;
	}
	(*head)->next = NULL;

	return SUCCESS;
}

int Linklist_headinsert(Link *head,TYPE e)
{
	if(NULL == head)
	{
		return FALSE;
	}

	Link *p = head;

	Link *q = (Link *)malloc(sizeof(Link));
	
	if(q == NULL)
	{
		return FALSE;
	}
	
	q->data = e;
	q->next = p->next;
	p->next = q;
	return SUCCESS;
}

int Linklist_hellinsert(Link * head,TYPE e)
{
	if(head == NULL)
	{
		return FALSE;
	}

	Link *p = head;

	while(p->next != NULL)
	{
		p = p->next;
	}

	Link *q = (Link *) malloc(sizeof(Link));
	
	if(q == NULL)
	{
		return FALSE;
	}

	q->data = e;
	q->next = p->next;
	p->next = q;
	return SUCCESS;
}

int Linklist_traverse(Link *head,void (*p)(TYPE))
{
	if(NULL == head)
	{
		return FALSE;
	}

	Link *q = head;
	while(q->next != NULL)
	{
		q = q->next;
		p(q->data);
	}
	return SUCCESS;
}

猜你喜欢

转载自blog.csdn.net/ZCzhouchao1/article/details/81487450