c语言——单链表的增加与查找(有头节点)

#include
#include
typedef struct Lnode{//typedef 是c语言自带的关键字,
					//这里相当建立了一个像int的Lnode 
	int data;
	struct Lnode *next;
}Lnode,*Linklist;

Linklist InitListtailinsert(Linklist &L)
{
	
	int x;
	L = (Lnode *)malloc(sizeof(Lnode));
	L->next=NULL;//头节点置空 
	Lnode *s ,*r=L;//*r是指向尾节点的指针 
	
	for (int i =0 ;i<10;i++){
		s = (Lnode *)malloc(sizeof(Lnode));
		s->data=i+1;
		r->next =s;//原本尾节点指向现在得s 
		r=s;//现在新的尾节点为s,r指向s 
	}

	r->next = NULL;
	return L;
}
Lnode *getelem(Linklist L,int i ){//按位查找
 
	int j=1;
	Lnode *p = L->next;//第一个节点是头节点 
	if(i==0){
		return L;
	}
	if (i<1)
	{
		return NULL;
	}
	while(jnext操作,所以是jnext;
		j++;
	}
	return p;
}
Lnode *locate(Linklist L ,int e)//按值查找 
{
	Lnode *s=L->next;
	while(s!=NULL&&s->data!=e)
	{
		s=s->next;
	}
	return s;
}
void insert_behind(Linklist &L,int i,int e){//在某个元素前增加元素 
	Lnode *p =getelem(L,i);
	Lnode *s =(Lnode*)malloc(sizeof(Lnode));
	s->data = e;
	s->next = p->next;
	p->next = s;
}
void insert_front(Linklist &L,int i,int e){//在第i个元素之前增加元素 
	Lnode *p =getelem(L,i);
	Lnode *s =(Lnode*)malloc(sizeof(Lnode));
	s->data=e;
	s->next = p->next;
	p->next=s;
	int temp = p->data;
	p->data = s->data;
	s->data = temp;
	
}
int main()
{
	Linklist L;
	L =InitListtailinsert(L);
	Lnode *p=getelem(L,4);
	printf("%d\n",p->data);
	Lnode *s=locate(L,5);
	printf("%d\n",s->data);
	insert_behind(L,4,114514);
	Lnode *P=getelem(L,5);
	printf("%d\n",P->data);
	insert_front(L,6,1919810);
	Lnode *S = getelem(L,6);
	printf("%d\n",S->data);
//	printf("%d",s->next->next->next->data);
	
}

你可能感兴趣的:(开发语言,数据结构,c语言)