DS20-练习3-函数题-求单链表元素序号

6-1 (10 分)
本题要求实现一个函数,求带头结点的单链表中元素序号。

函数接口定义:
int Locate ( LinkList L, ElemType e);
L是带头结点的单链表的头指针,e是要查找的元素值。如果e在单链表中存在,函数Locate返回其序号(序号从1开始);否则,返回0。

裁判测试程序样例:

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

typedef int ElemType;
typedef struct LNode
{
    ElemType data;
    struct LNode *next;
}LNode,*LinkList;

LinkList Create();/* 细节在此不表 */

int Locate ( LinkList L, ElemType e);

int main()
{
    ElemType e;
    LinkList L = Create();
    scanf("%d",&e);
    printf("%d\n", Locate(L,e));
    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:
2 1 4 5 3 -1
5
输出样例:
4

int Locate ( LinkList L, ElemType e)
{
	int count=1;//无情计数器,从1开始。下面的第一个if判断若第一次就判得p指e,那就直接输出地址为1(首元结点嘛,题目也说了序号从1开始的)
	LNode *p;//弄一个指针p
	p=L->next;
	while(p!=NULL)//只要p不是NULL,就一直循环下去。p是NULL,跳出循环
	{
		if(p->data==e)//当p所指为e时,即可输出地址
			return count;
		p=p->next;//否则,继续p=p->next
		count++;//计数器再加
	}
	if(p==NULL)
	return 0;
}

————————————————分割线—————————————————————
はいはい下面是我的废话!

这个。。。如果想要在DEV里测试一下这儿的代码行不行的通。。其实是不行的。。。人原来的代码就省略了好多东西,肯定是运行不了的。

做一道题开十几个网页搜参考答案来参考。。。俺真的不太行。。。今天拖鞋刚跟我说:“其实你想一下,学计算机的人是按照规定去做就行了,还是需要有自己创造性的思想解读理解?”我说:“肯定要有创造思维,但我没有基础,都不知道怎么创造。”很无力的回答呜呜呜(虽然我是在一边假哭一遍不好好打基础。。。该死!)让大一下学期充实起来吧!不要再在小组里拖别人后腿了!

陀螺仪的零飘和温漂是普遍存在的问,需要进行校准处理。以下是一份去除陀螺仪零飘和温漂的例程: ```c++ #include <Wire.h> #include <Adafruit_Sensor.h> #include <Adafruit_L3GD20.h> #define GYROSCOPE_SENSITIVITY 0.00875 Adafruit_L3GD20 gyro; float x_offset, y_offset, z_offset; void setup() { Serial.begin(9600); Wire.begin(); gyro.enableAutoRange(true); gyro.begin(L3DS20_RANGE_500DPS); calibrate_gyroscope(); } void loop() { sensors_event_t event; gyro.getEvent(&event); float x_raw = event.gyro.x; float y_raw = event.gyro.y; float z_raw = event.gyro.z; float x = x_raw - x_offset; float y = y_raw - y_offset; float z = z_raw - z_offset; x *= GYROSCOPE_SENSITIVITY; y *= GYROSCOPE_SENSITIVITY; z *= GYROSCOPE_SENSITIVITY; Serial.print("X: "); Serial.print(x); Serial.print(", Y: "); Serial.print(y); Serial.print(", Z: "); Serial.println(z); delay(100); } void calibrate_gyroscope() { Serial.println("Calibrating gyroscope..."); int samples = 500; float x_sum = 0, y_sum = 0, z_sum = 0; for (int i = 0; i < samples; i++) { sensors_event_t event; gyro.getEvent(&event); x_sum += event.gyro.x; y_sum += event.gyro.y; z_sum += event.gyro.z; delay(10); } x_offset = x_sum / samples; y_offset = y_sum / samples; z_offset = z_sum / samples; Serial.print("X offset: "); Serial.println(x_offset); Serial.print("Y offset: "); Serial.println(y_offset); Serial.print("Z offset: "); Serial.println(z_offset); } ``` 该例程使用了 Adafruit_L3GD20 库读取陀螺仪数据,并通过 calibrate_gyroscope() 函数进行零飘和温漂的校准。在 loop() 函数中,将原始数据减去校准值,并乘以灵敏度得到角速度值。最后将角速度值输出到串口。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值