数据结构与算法 链表的操作

tepedef struct Node{

int date;
struct Node *next;
} List;
//创建一个链表
void CreatList(List **ptrl)
{
	(**ptrl)=(List*)malloc(sizeof(List));
	(*List)->next=NULL;
} 
//求长度 
int length(List *ptrl)
{
	List *p=ptrl;
	int j=0;
	while(p)
	{
		p=p->next;
		j++;
	}
	return j;
}
//按序号查找 
int FindList(List *ptrl,int k)
{
	List *p=ptrl;
	int i=1;
	while(p!=NULL&&i<k)
	{
		p=p->next;
		i++
	}
	if(i=k)
	return p;
	else
	return NULL;
}
//按值查找
List *Find(int x,List *ptrl)
{
	List *p=ptrl;
	while(p!=NULL&&p->date!=x)
	p=p->next;
	return p;
	
}
//链表的插入
List* InsertList(int *e,List *ptrl,int i)
{
	List *p,*s;
	if(i==1)//插入的元素在表头 
	{
		s=(List*)malloc(sizeof(List));
		s->date=x;
		s->next=ptrl;
		return s;
	}
    p=Find(i-1,ptrl)//如果要插入的元素为空则返回 
    if(p==NULL)
    {
    	printf("canshucuowu");
    	return NULL;
    }
    else
    {
    	s=(List*)malloc(sizeof(List));//插入操作 
    	s->date=x;
    	s->next=p->next;
    	p->next=s;
    	return ptrl;
    }
}
//链表的删除
 List* DelseteList(int *e,List *ptrl,int i,)
 {
 	List *p,*s;
 	if(i==1)
 	{
 		s=ptrl;
 		if(ptrl!=NULL)
 		ptrl=ptrl->next;
 		else ruturn NULL;
 		free(s);
 		return ptrl;
 	}
 	p=Find(i-1,ptrl)
 	if(p==NULL)
 	{
 		printf("bucunzia1");
 	    return ;
	 }
	 else
	 {
	 	s=p->next;
	 	p->next=s->next;
		 free(s); 
	 }	
 }

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。