理工小刘的程序设计学习笔记


前言


提示:以下是本篇文章正文内容,下面案例可供参考

一、日期:2021/7/18

今日主要讨论了
1.存在多种情况下的选择问题
2.以建立链表为例,对于指针的失效的条件的探究

二、问题简要及其笔记

1.存在多种情况下的选择问题

代码如下(示例):

//定义学生的结构体
struct  stu{
	int number;
	int score;
};

bool cmp (stu a, stu b){
	//如果学生的分数不同则按照分数从大到小排列 
	if(a.score !=b.score){
		return a.score>b.score;
	}
	//如果学生的分数相同则按照数字的排序从小到大排序
	else{
		return a.number<b.number;
	}
}
bool cmp (stu a,stu b){
//使用三目运算符可以有效地减少代码的规模
	return a.score!=b.score ? a.score>b.score : a.number<b.number;
}

2.以建立链表为例,对于指针的失效的条件的探究

代码如下(示例):

ListNode* buildlist (){
  	ListNode*head = NULL;
	ListNode* next1 = NULL;
	ListNode* ll1 =NULL;
	for(int i = 0;i<3;i++){
		ll1 = (ListNode*)malloc(sizeof(ListNode));
		if(head==NULL){
			head = ll1;
		}else{
//正确版本			
<-------------------------------------------------------------------------------------->
			next1->next = ll1;
<-------------------------------------------------------------------------------------->	
		}	
		ll1->next = NULL;
		cin>>ll1->val;
//正确版本 
<-------------------------------------------------------------------------------------->
		next1 = ll1;
<-------------------------------------------------------------------------------------->		
	}
	return head; 
} 

 ListNode* buildlist (){
  	ListNode*head = NULL;
	ListNode* next1 = NULL;
	ListNode* ll1 =NULL;
	for(int i = 0;i<3;i++){
		ll1 = (ListNode*)malloc(sizeof(ListNode));
		if(head==NULL){
			head = ll1;
		}else{
//错误版本			
<-------------------------------------------------------------------------------------->
			next1  = ll1;
<-------------------------------------------------------------------------------------->	
		}	
		ll1->next = NULL;
		cin>>ll1->val;
//错误版本 
<-------------------------------------------------------------------------------------->
		next1 = ll1->next;
<-------------------------------------------------------------------------------------->		
	}
	return head; 
} 

总结

以上就是今天要讲的内容,本文仅仅简单介绍了指针失效的一种常见情况,譬如,在每一次循环进行相关的操作(例如:给节点内部的变量赋值的行为)后,如果需要将此节点与上一个完成相关行为(例如:给节点内部的变量赋值的行为)产生逻辑关系的情况(称之为节点连接问题),不能在每次行为结束(循环结束)的末尾记录本次节点的next的结果,而是应该记录本次节点的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值