今天第二次限時上機?
卡了半小時的點竟然是head前沒有+變數(num.head)
head是類的成員啊!!!
第二題還是用了遍歷,要學習一下優化的演算法
去頭+再置尾操作
有n個數(1~n)按順序組成的序列,當至少還剩兩個數時進行以下操作:把第乙個數從序列中去掉,然後把新的第乙個數放到序列的末尾。當剩下最後乙個數時也從序列中去掉。
輸入n,輸出每次去掉的數。其中,n的值不超過50
輸入:7
輸出:1 3 5 7 4 2 6
#include
using namespace std;
template
class list;
template
class linknode
linknode
(const type &value)
; private:
type data;
linknode
*next;};
template
class list
; bool insert
(type element)
;void
show()
;void
showafter()
; bool neighbourexchange()
;void
move()
;void
change
(int k,
int n,list num);}
;//ππ『ï∫ø ˝
template
list::
list()
template
bool list::
insert
(type element)
linknode
*p=head;if(
!p)while
(p->next!=
null
) p=p->next;
p->next=newnode;
return true;
}template
void list::
show()
cout<}template
//把第乙個節點挪到最後的操作
void list::
move()
template
void list::
change
(int k,
int n,list num)
//實現函式
//列印刪掉的節點,刪除刪掉的節點,置尾操作,遞迴
if(k==n)
}int
main()
一開始有訪問空指標問題,記得判斷head==null情況
c++沒學過的我還是選擇了鍊錶?
然而室友說用vector只要20來行
所以我決定再學習一下vector
vector
vector==動態陣列,能存放各種資料型別
建立:vector< int> num; /vector< int >num(n);初始大小為n(佔位,之後加入的元素順接在後)
vector < int> num(n,a);初始大小為n,初始化所有值為a
vector < int> num(b); 用b初始化num
int n = ;
vector num(n, n+5) ;將陣列n的前5個元素作為向量的初值
vector num(&n[1], &n[4]) ;將n[1] - n[4]範圍內的元素作為向量a的初值
末尾加入:num.push_back(temp);
末尾刪除:num.pop_back();
清除:num.clear();
大小:num.size();
比較:a= =b 可直接比較相等
排序:sort(num.begin(),num.end());(需要#include< algorithm>)
sort是公升序的,需要降序就再reverse();
插入:num.insert(num.begin(), 10); 將10插入到向量的起始位置前
num.insert(num.begin(), 3, 10) ; 將10分別插入到向量元素位置的0-2處(共3個元素)
刪除:num.erase(num.begin()) ;將起始位置的元素刪除
num.erase(num.begin(), num.begin()+3) ;將(num.begin(), num.begin()+3)之間的元素刪除
取值:num.back();取最後乙個元素
num.front();取第乙個元素
反**num.reverse();
作為引數傳入時: double distance(vector&a, vector&b)&不要漏
大致先學習到這裡~
有合適的題目就用vector練習吧!!
加油加油?
與下乙個更大值的距離
給出一組數字,返回一串值,對應位置的數字表示與下乙個更大的數之間的位置間隔。如果之後都沒有更大的數,那麼該位置為0
數列的長度不超過30000,每個數的範圍在[0,100]之間(以空格隔開)
輸入: 73 74 75 71 69 72 76 73
輸出: 1 1 4 2 1 1 0 0
注:盡量不要使用暴力的方法
#include
using namespace std;
intmain()
cout<<
"input"
<" numbers:"
0;i)for
(i=0
;i) cout<<
"result:"
0;i) cout<<<
" ";
cout<}
嗯,來乙個遍歷的吧…
我好像也想不出優化版本了呢…(除了先記錄右邊是否是更大的數,是的話置1,不是就尋找,似乎也沒多優化…?)
先mark一下,下次聽助教分析啦!
希望下週的上機課能想好思路,更快完成任務哦~
星際2的DS和Shadow學習筆記。
最近,隨著外包告一段落,開始整理和重構gc了,順手整理一下gc的mrt。之前沒有認真讀完的星際2的 這次至少是把mrt部分和shadow部分讀了一下。先說mrt吧 星際2的mrt大約如下配置 半透明陰影確實能帶來很多真實感,效果看起來也很不錯。如果煙霧沒有投影,給人最深刻的感覺就是這些半透明的東西,...
vector 學習筆記
c 的標頭檔案是 include 沒有.h,而且還有加上命名空間using namespace std 主要演示vector的定義以及使用下標訪問,除了下標訪問,還有迭代器。include include using namespace std void main vectorivec for ve...
vector學習筆記
一 概述 1 集合中的每個物件都有乙個與之對應的索引,索引用於訪問物件。2 使用vector必須包含標頭檔案 include 3 vector能容納絕大多數的物件作為其元素,但是因為引用不是物件,所以不存在包含引用的vector。二 使用 1 定義 vectorivec vector file 2 ...