线性链式表

#include<stdio.h>
#include<malloc.h>

typedef struct Link{
	int data;
	struct Link *next;
	int indext;
}LNode,*Linklist;

Linklist create();//创建链表
int input(Linklist L);//插入一个结点(尾插法) 
int input_1(Linklist L);//插入多个结点(尾插法)
int input_head(Linklist L); //插入多个结点(头插法)
void print(Linklist L);//输出结点 
void delet_Link(Linklist L);//删除结点(按元素值) 
void reverse(Linklist L);//逆置链表

 
main()
{
	Linklist L;
	L=create();
	printf("插入新节点\n");
	if(!input_1(L))
	printf("插入新结点失败\n");
	else printf("插入新节点成功\n");
//	if(!input_head(L))
//	printf("插入新结点失败\n");
//	else printf("插入新节点成功\n");
	print(L);  //输出结点 input_head(Linklist L)
	int i;
	delet_Link(L);
//	print(L);
	reverse(L);
	print(L); 
	
 }

Linklist create()
{
	Linklist phead;
	phead=(Linklist)malloc(sizeof(LNode));
	phead->next=NULL;
	phead->indext=0;
	return phead;
}

int input_1(Linklist L)  //输入多个结点 
{
	Linklist pnew,ptemp;
	do
	{
		pnew=(Linklist)malloc(sizeof(LNode));
		scanf("%d",&pnew->data);
		pnew->next=NULL;
		L->next=pnew;
		L=pnew;
		L->indext++;
		
	}while(pnew->data!=0);
	pnew->next=NULL;
}


int input(Linklist L)  //插入一个结点 
{
	Linklist pnew,ptemp;
	pnew=(Linklist)malloc(sizeof(LNode));
	if(!pnew)
	return 0;
	printf("输入信息");
	scanf("%d",&pnew->data);
	pnew->next=NULL;
	L->next=pnew;
	return 1;
} 

void print(Linklist L)
{
	Linklist ptemp=L->next;
	while(ptemp)//!=NULL
	{
		printf("%d,",ptemp->data);
		ptemp=ptemp->next;
	}
}

int input_head(Linklist L)//头插法 
{
	Linklist pnew,ptemp;
	printf("头插法\n");
	int data;
	scanf("%d",&data); 
	while(data!=0)
	{
		pnew=(Linklist)malloc(sizeof(LNode));
		pnew->data=data;
		pnew->next=L->next;
		L->next=pnew;
		scanf("%d",&data);
	}
	return 1;
}

void delet_Link(Linklist L)
{
	Linklist ptemp=L;
	printf("\n输入你要删除的元素\t");
	int x,i;
	scanf("%d",&x);
	if(L->next==NULL)  printf("空"); 
	while(L->data!=x && L)
	{
		ptemp=L;
		L=L->next;
		i++;
	}
//	if(i==L->indext) printf("不存在\n");
//	else
	{
		ptemp->next=L->next;
		free(L);
		L->indext--;
	}
}

void reverse(Linklist L)
{
	Linklist ptemp,pnew;
	ptemp=L->next;
	L->next=NULL;
	while(ptemp)
	{
		pnew=ptemp;
		ptemp=ptemp->next;
		pnew->next=L->next;
		L->next=pnew;
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值