头插法,尾插法,创建单链表,然后删除所有结点值为x的结点

头插法,尾插法,创建单链表,然后删除所有结点值为x的结点

实现代码:

#include <stdio.h>
#include <stdlib.h>
typedef struct LNode{
	int data;
	struct LNode *next;
}LNode;
//头插法 
void Create1(LNode *&L,int a[],int n){
	LNode *p;
	int i;
	L=(LNode*)malloc(sizeof(LNode));
	L->data=a[0];
	L->next=NULL;
	for(i=1;i<n;i++){
		 p=(LNode*)malloc(sizeof(LNode));
 		 p->data=a[i];
		 p->next=L->next;
		 L->next=p;
	}
}
//尾插法 
void Create2(LNode *&L,int a[],int n){
	LNode *r,*s;
	int i;
	L=(LNode*)malloc(sizeof(LNode));
	L->data=a[0];
	r=L;
	L->next=NULL;
	for(i=1;i<n;++i){
		s=(LNode*)malloc(sizeof(LNode));
		s->data=a[i];
		r->next=s;
		r=s;//或者这样r=r->next;
	}
	r->next=NULL;
}
void Delete_x(LNode *&L,int x){
	LNode *p;
	if(L==NULL)
		return;
	if(L->data==x){
		p=L;
		L=L->next;
		free(p);
		Delete_x(L,x);
	}else{
		Delete_x(L->next,x);
	}
}
void ShowL(LNode *L){
	while(L!=NULL){
		printf("%d ",L->data);
		L=L->next;
	}	 	
}
int main(int argc, char *argv[])
{
	int i,a[5]={1,3,4,1,7},b[5]={1,3,4,1,7};
	LNode *L1=NULL,*L2=NULL;
	Create1(L1,a,5);//头插法创建单链表 
    Create2(L2,b,5);//尾插法创建单链表 
	Delete_x(L1,1);//删除所有的1 
	Delete_x(L2,1);//删除所有的1 
	ShowL(L1);
	printf("\n");
	ShowL(L2);
	printf("\n");
	return 0;
}
输出结果:

7 4 3
3 4 7
请按任意键继续. . .




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值