单链表终极版

#include <stdio.h>
#include <stdlib.h>

struct Book{
	int x;
struct Book *next;	
}; 
void InsertNode(struct Book **L,int x){
	struct Book* new;
	struct Book* qian;
	struct Book* hou;
	qian=*L;
	hou=NULL;
	
	while(qian!=NULL&&qian->x<x){
		hou=qian;
		qian=qian->next;
	}
	new=(struct Book*)malloc(sizeof(struct Book));
	if(new==NULL){
		printf("内存分配失败!"); 
		exit(1);
	}
	new->x=x;
	new->next=qian;
	if(hou==NULL){
		*L=new; 
	}else{
		hou->next=new;	
	}
}


void delete(struct Book**L,int d){
struct Book*qian;
struct Book*hou;
qian=*L;
hou=NULL;

while(qian!=NULL&&qian->x!=d){
	
	hou=qian;
	qian=qian->next;
	
}
	if(qian==NULL){
		
	printf("找不到");	
	return ; 
		
	}else{
		
		if(hou==NULL)
		{
			*L=qian->next;
			
		}else{
		hou->next=qian->next;	
		free(qian);
		}
		
	}
	
	
}

void BookPrint(struct Book*L){
	struct Book* qian;
	qian=L;
	while(qian!=NULL){
		printf("  %d  ",qian->x);
		qian=qian->next;
	}
	putchar('\n');
}
int main(int argc, char** argv) {
struct Book *L=NULL;
int x,d;
while(1){
	printf("请输入x\n"); 
	scanf("%d",&x);
	if(x==-1){
		break;		
	}
InsertNode(&L,x);
printf("打印结果是\n"); 
	BookPrint(L);
	printf("删除开始  输入删除数\n");
scanf("%d",&d); 
	delete(&L,d);
	printf("\n执行完毕\n");
BookPrint(L);
}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值