C语言单链表的删除

#include
#include
#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;
}
void Elemdelete(Linklist &L,int i){//删除第i位节点 
	Lnode *p = getelem(L,i-1);
	Lnode *q=p->next;
	p->next=q->next;
	free(q)  ;
} 
void showlist(Linklist L){
	Lnode *p=L->next;
	while(p){
		printf("%d\n",p->data);
		p=p->next;
	}
}
int main()
{
	Linklist L;
	L =InitListtailinsert(L);
	Elemdelete(L,2);
	showlist(L);
//	if (L->next->next==NULL)
//		printf("yes");
//	printf("%d\n",L->next->next->data);
	
}

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