数据结构作业记录
1
#include<iostream>
using namespace std;
template <class DataType>
class Node
{
public:
Node(DataType x);
~Node();
DataType GetData();
void SetData(DataType x);
private:
DataType data;
Node* next;
};
template <class DataType>
Node<DataType>::Node(DataType x)
{
data = x;
next = 0;
}
template <class DataType>
Node<DataType>::~Node()
{
}
template <class DataType>
DataType Node<DataType>::GetData()
{
return data;
}
template <class DataType>
void Node<DataType>::SetData(DataType x)
{
data = x;
}
int main()
{
Node<double> s(3.14);
Node<int> t(5);
cout << s.GetData() << endl;
t.SetData(10);
cout << t.GetData() << endl;
return 0;
}
3
#include<iostream>
using namespace std;
void RRotate(int *a, int k) {
int temp;
//1、反转a[0]~a[k-1]
for (int i = 0, j = k - 1; i < j; i++, j--) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
//2、反转a[k]~a[9]
for (int i = k, j = 9; i < j; i++, j--) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
//3、反转a[0]~a[9]
for (int i = 0, j = 9; i < j; i++, j--) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
int main()
{
int i,k,a[10]={1,2,3,4,5,6,7,8,9,10};
cout<<"循环移动前:"<<endl;
for(i=0;i<10;i++)
cout<<a[i]<<" ";
cout<<endl;
cout<<"循环移动多少位(0-10):"<<endl;
cin>>k;
RRotate(a,k);
cout<<"循环移动后:"<<endl;
for(i=0;i<10;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
4
/*
数组nums包含从0到n的所有整数,但其中缺了一个。
请编写代码找出那个缺失的整数。要求时间复杂度为O(n)。
*/
#include<iostream>
using namespace std;
int missingNumber(int* nums, int num) {
int m, sumPre= num, sumReal=0;
//sumPre把0~num加起来,sumReal把a[0]~a[num-1]加起来,相减得缺失数
for (int i = 0; i < num; i++) {
sumPre += i;
sumReal += nums[i];
}
m = sumPre - sumReal;
return m;
}
int main() {
int nums[] = {4,3,1,2,0};
int num = sizeof(nums) / sizeof(int);
int m = missingNumber(nums, num);
printf("%d", m);
return 0;
}