国庆假期作业二

1、运行

2、代码

#include <my_h.h>
//定义双向链表结构体
typedef struct dbl
{
	int data;
	struct dbl *front;
	struct dbl *next;
}dblink,*plink;

//创建头结点
plink create_head()
{
	plink H=(plink)malloc(sizeof(dblink));
	if(NULL==H)
	{
		printf("头结点创建失败\n");
		return NULL;
	}
	H->front=NULL;
	H->next=NULL;
	return H;
}
//创建普通结点
plink create_node(int data)
{
	plink new=(plink)malloc(sizeof(dblink));
	if(NULL==new)
	{
		printf("结点创建失败\n");
		return NULL;
	}
	new->front=NULL;
	new->next=NULL;
	new->data=data;
	return new;
}
//头插
int toucha(plink H,int data)
{
	if(NULL==H)
		return -1;
	plink new=create_node(data);
	new->next=H->next;
	new->front=H;
	if(H->next!=NULL)
		H->next->front=new;
	H->next=new;
	return 0;
}
//尾删
int weishan(plink H)
{
	if(NULL==H)
		return -1;
	if(NULL==H->next)
		return -2;
	plink p=H->next;
	while(p->next!=NULL)
		p=p->next;
	p->front->next=p->next;
	free(p);
	p=NULL;
	return 0;
}
//实现
int main(int argc, const char *argv[])
{
	plink H=create_head();//创建链表头
	for(int i=97;i<=122;i++)//循环头插
		toucha(H,i);
	plink p=H;
	while(p->next!=NULL)
		p=p->next;
	while(p!=H)
	{
		printf("%c->",p->data);
		p=p->front;
		weishan(H);
	}
	printf("NULL\n");
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值