對(duì)實(shí)驗(yàn)問題與解決方案的總結(jié)
- 問題1-觀察者偏見:由于觀察者個(gè)人的動(dòng)機(jī)和預(yù)期導(dǎo)致的錯(cuò)誤(例如不同人對(duì)同一事件的描述大相徑庭)
- 解決1-標(biāo)準(zhǔn)化和操作性定義:規(guī)范實(shí)驗(yàn)程序、使用理解達(dá)成一致的概念、量化描述、定義自變量與因變量
- 問題2-期望效應(yīng):研究者給予被試暗示,導(dǎo)致誘發(fā)反應(yīng)的是研究者期望,而不是自變量
- 解決2-雙盲控制:被試不知道自己參與的實(shí)驗(yàn)是研究什么的,與被試接觸的研究者也不知道被試進(jìn)行了什么實(shí)驗(yàn)操作
- 問題3-安慰劑效應(yīng):病人接受了無效的藥物或治療后,對(duì)于治療會(huì)產(chǎn)生良好效果的信念導(dǎo)致了身體康復(fù)
- 解決3-安慰劑控制:在驗(yàn)證某種事物的效果時(shí),添加安慰劑控制組,事物實(shí)驗(yàn)組的效果減去了安慰劑控制組的效果后,才是事物真正的效果。
- 問題4-個(gè)體差異:被試擁有相同的特性會(huì)讓實(shí)驗(yàn)結(jié)果的適用性降低
- 解決4-隨機(jī)取樣:樣本內(nèi)諸如性別、種族等特性的分布與研究總體相近,才能作為代表性的樣本
- 問題5-相關(guān)與因果:高相關(guān)只是表明了兩個(gè)事物以某種方式建立了聯(lián)系,并不意味著一個(gè)事物可以導(dǎo)致另一個(gè)事物的發(fā)生。
- 解決6-理清邏輯:分辨事物的相關(guān)或因果關(guān)系,避免因混淆二者導(dǎo)致的錯(cuò)誤。
- 方法:虛擬頭節(jié)點(diǎn) + 鏈表基本操作
- 代碼
#include <bits/stdc++.h> // 萬用頭
using namespace std;
class MyLinkedList {
public:
// 定義鏈表節(jié)點(diǎn)結(jié)構(gòu)體
struct LinkedNode {
int val;
LinkedNode* next;
LinkedNode(int val):val(val), next(nullptr){}
};
// 初始化鏈表
MyLinkedList() {
_dummyHead = new LinkedNode(0); // 這里定義的頭結(jié)點(diǎn) 是一個(gè)虛擬頭結(jié)點(diǎn),而不是真正的鏈表頭結(jié)點(diǎn)
_size = 0;
}
// 獲取到第index個(gè)節(jié)點(diǎn)數(shù)值,如果index是非法數(shù)值直接返回-1, 注意index是從0開始的,第0個(gè)節(jié)點(diǎn)就是頭結(jié)點(diǎn)
int get(int index) {
if (index > (_size - 1) || index < 0) {
cout<<"出錯(cuò)! get(int index)中index為"<< index <<endl;
return -1;
}
LinkedNode* cur = _dummyHead->next;
while(index--){ // 如果--index 就會(huì)陷入死循環(huán)
cur = cur->next;
}
return cur->val;
}
// 在鏈表最前面插入一個(gè)節(jié)點(diǎn),插入完成后,新插入的節(jié)點(diǎn)為鏈表的新的頭結(jié)點(diǎn)
void addAtHead(int val) {
LinkedNode* newNode = new LinkedNode(val);
newNode->next = _dummyHead->next;
_dummyHead->next = newNode;
_size++;
}
// 在鏈表最后面添加一個(gè)節(jié)點(diǎn)
void addAtTail(int val) {
LinkedNode* newNode = new LinkedNode(val);
LinkedNode* cur = _dummyHead;
while(cur->next != nullptr){
cur = cur->next;
}
cur->next = newNode;
_size++;
}
// 在第index個(gè)節(jié)點(diǎn)之前插入一個(gè)新節(jié)點(diǎn),如果index為0,那么新插入的節(jié)點(diǎn)為鏈表的新頭節(jié)點(diǎn)。
// 如果index 等于鏈表的長度,則說明是新插入的節(jié)點(diǎn)為鏈表的尾結(jié)點(diǎn)
// 如果index大于鏈表的長度或index為負(fù)數(shù),則返回空
void addAtIndex(int index, int val) {
if (index > _size || index < 0) {
cout<<"出錯(cuò)! addAtIndex(int index, int val)中index為"<< index <<endl;
return;
}
LinkedNode* newNode = new LinkedNode(val);
LinkedNode* cur = _dummyHead;
while(index--) {
cur = cur->next;
}
newNode->next = cur->next;
cur->next = newNode;
_size++;
}
// 刪除第index個(gè)節(jié)點(diǎn),如果index 大于等于鏈表的長度,直接return,注意index是從0開始的
void deleteAtIndex(int index) {
if (index >= _size || index < 0) {
cout<<"出錯(cuò)! deleteAtIndex(int index)中index為"<< index <<endl;
return;
}
LinkedNode* cur = _dummyHead;
while(index--) {
cur = cur ->next;
}
LinkedNode* tmp = cur->next;
cur->next = cur->next->next;
delete tmp;
_size--;
}
// 打印鏈表
void printLinkedList() {
LinkedNode* cur = _dummyHead;
while (cur->next != nullptr) {
cout << cur->next->val << " ";
cur = cur->next;
}
cout << endl;
}
private:
int _size;
LinkedNode* _dummyHead;
};
int main() {
MyLinkedList linkedList;
linkedList.addAtHead(1);
linkedList.addAtTail(3);
linkedList.addAtIndex(1,2); //鏈表變?yōu)?-> 2-> 3
linkedList.printLinkedList();
cout<<linkedList.get(1)<<endl; //返回2
linkedList.deleteAtIndex(1); //現(xiàn)在鏈表是1-> 3
cout<<linkedList.get(1)<<endl; //返回3
return 0;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。