安徽科技学院 信网学院网络文化节 曾伟

#include<stdio.h>

typedef struct Book //结构体的模板,用关键字typedef将结构体用 Z 表示
{
int number;
char* name;
char* writer;
char* country;
double price;
struct Book* next;
}Z;
int Putbookmessage(Z head) //自定义的打印书本信息的函数,结构体作为参数,一 一打印
{
Z
p = head;
while (p != NULL)
{
printf(“编号:%d\n书名:%s\n作者:%s\n所在国家:%s\n价格:%lf\n”,
p->number, p->name, p->writer, p->country, p->price);
putchar(’\n’);
p = p->next; //遍历整个链表,下同
}
return 0;
}

//double PriceMax()
//{
//
// return max;
//}
void PrintMax(Z* head, double max) //自定义没有返回值的打印最大价格书本的全部信息
{
Z* p = head;
p = p->next;
while (p != NULL)
{
if (max < (p->price)) //简单的逻辑,把最大的价格赋值给max
{
max = (p->price);
printf(“价格最贵的书籍信息:\n编号:%d\n书名:%s\n作者:%s\n所在国家:%s\n价格:%lf\n”,
p->number, p->name, p->writer, p->country, p->price);
putchar(’\n’);

	}
	p = p->next;
}

}
Z* addForward(Zhead,int data,Znew1) //自定义的函数,在想要编号的前面插入新的书籍信息
{
Z* p = head;
if (p->number == data) //若链表的头部即为想要的数据,让头部成为下一个节点,然后把新的头部返回
{
new1->next = p;

	return new1;
}
while (p != NULL)            //若头部不是想要插入的数据
{
	if (p->next->number == data)  //如果和下一个节点的数据相等或下下一个,因为p=p->next便利了所有节点
	{                             
		new1->next = p->next;
		p->next = new1;
		return head;
	}
	p = p->next;
}
putchar('\n');
return head;                         //总会找到想要的数据,然而头部没有变化,返回原本的头部head

}
int main()
{ //利用全局变量struct的模板,加载想要的一些数据,仅为一部分,可以自行增加代码
Z t1 = { 001,“童年”,“高尔基”,“苏联”,10.0 ,NULL};
Z t2 = { 002,“呼啸山庄”,“艾米莉”,“英国”,10.1,NULL };
Z t3 = { 003,“昆虫记”,“法布尔”,“法国”,9.9 ,NULL};
t1.next = &t2;
t2.next = &t3;
Z* head;
head = &t1;
Putbookmessage(&t1); //调用打印书本信息函数

//double max;
//max = PriceMax(&t1);
PrintMax(head,head->price);  //调用打印最大价格书本的全部信息的函数

Z t4 = {004,"骆驼祥子","老舍","中华人名共和国",9.9,NULL};  //新增的节点,为下一步插入链表当中做准备
head = addForward(&t1,002,&t4);   //调用插入函数
Putbookmessage(head);            //调用打印书本信息函数
//max = PriceMax(&t1);
PrintMax(&t1,head->price);  //再次打印最大价格的书本全部信息来以此作为函数是否成功的判断
return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值