day3: homework
This commit is contained in:
parent
3320bf12d2
commit
eb4944efe7
|
@ -0,0 +1,34 @@
|
||||||
|
#include <iostream>
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <cstring>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
class SLink
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
char *title;
|
||||||
|
|
||||||
|
public:
|
||||||
|
SLink() {}
|
||||||
|
SLink(const char *title)
|
||||||
|
{
|
||||||
|
this->title = (char *)malloc(50);
|
||||||
|
strcpy(this->title, title);
|
||||||
|
}
|
||||||
|
~SLink();
|
||||||
|
void show()
|
||||||
|
{
|
||||||
|
cout << title << endl;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
SLink::~SLink() {}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
SLink s1;
|
||||||
|
SLink s2("disen 补课中");
|
||||||
|
s2.show();
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
#include <iostream>
|
||||||
|
#include <cstring>
|
||||||
|
#include <cstdlib>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
class Color
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
int r, g, b;
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit Color(int r, int g = 0, int b = 0) : r(r), g(g), b(b)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void show()
|
||||||
|
{
|
||||||
|
cout << r << "," << g << "," << b << endl;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
Color c = Color(2, 3, 4);
|
||||||
|
c.show();
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
#include <iostream>
|
||||||
|
#include <cstring>
|
||||||
|
#include <cstdlib>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
class Point
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
int x, y;
|
||||||
|
|
||||||
|
public:
|
||||||
|
Point(int x, int y);
|
||||||
|
void show()
|
||||||
|
{
|
||||||
|
cout << x << "," << y << endl;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Point::Point(int x, int y)
|
||||||
|
{
|
||||||
|
this->x = x;
|
||||||
|
this->y = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
Point *p1 = new Point[3]{Point(1, 2), Point(2, 3), Point(3, 4)};
|
||||||
|
p1[2].show();
|
||||||
|
delete[] p1;
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
// 设计一个学生类,包括学号、姓名、成绩,并设计接口函数用来输出这些学生数据并计算平均分。并编写main函数进行测试:
|
||||||
|
// 输出如:
|
||||||
|
// 学号 姓名 成绩 1 张XX 98 2 王XX 90 3 XXX 89 平均成绩: XX
|
||||||
|
#include <iostream>
|
||||||
|
#include <cstring>
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <iomanip>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
class Student
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
int sid;
|
||||||
|
string name;
|
||||||
|
float score;
|
||||||
|
|
||||||
|
public:
|
||||||
|
Student(int sid, const string &name, float score) : sid(sid), name(name), score(score)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
~Student() {}
|
||||||
|
|
||||||
|
public:
|
||||||
|
static void avgAndShow(Student *stus, int n);
|
||||||
|
};
|
||||||
|
|
||||||
|
void Student::avgAndShow(Student *stus, int n)
|
||||||
|
{
|
||||||
|
float avg = 0.0f;
|
||||||
|
cout << "学号\t"
|
||||||
|
<< "姓名\t"
|
||||||
|
<< "成绩" << endl;
|
||||||
|
for (int i = 0; i < n; i++)
|
||||||
|
{
|
||||||
|
cout << stus[i].sid << "\t" << stus[i].name << "\t" << stus[i].score << endl;
|
||||||
|
avg += stus[i].score / n;
|
||||||
|
}
|
||||||
|
cout << "平均成绩: " << setprecision(3) << avg << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
Student *stus = new Student[3]{
|
||||||
|
Student(1, "张XX", 98),
|
||||||
|
Student(2, "王XX", 90),
|
||||||
|
Student(3, "XXX", 89)};
|
||||||
|
|
||||||
|
Student::avgAndShow(stus, 3);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,148 @@
|
||||||
|
// 创建一个名为 LinkedList 的类,实现链表的基本操作,包括插入节点、删除节点和反转链表等。
|
||||||
|
// 【提示】单向链表
|
||||||
|
#include <iostream>
|
||||||
|
#include <cstring>
|
||||||
|
#include <cstdlib>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
class Node
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
int data;
|
||||||
|
Node *next;
|
||||||
|
|
||||||
|
public:
|
||||||
|
Node(int value)
|
||||||
|
{
|
||||||
|
this->data = value;
|
||||||
|
this->next = NULL;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class LinkedList
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
Node *head;
|
||||||
|
|
||||||
|
public:
|
||||||
|
LinkedList()
|
||||||
|
{
|
||||||
|
head = NULL; // 初始头结点
|
||||||
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
Node *insertNode(int insValue);
|
||||||
|
Node *deleteNode(int delValue);
|
||||||
|
Node *reverseLinkedList();
|
||||||
|
void print();
|
||||||
|
};
|
||||||
|
|
||||||
|
Node *LinkedList::insertNode(int insValue)
|
||||||
|
{
|
||||||
|
Node *newNode = new Node(insValue);
|
||||||
|
|
||||||
|
if (NULL == head)
|
||||||
|
head = newNode;
|
||||||
|
|
||||||
|
Node *p = head;
|
||||||
|
while (p->next != NULL)
|
||||||
|
{
|
||||||
|
p = p->next;
|
||||||
|
}
|
||||||
|
p->next = newNode;
|
||||||
|
return head;
|
||||||
|
}
|
||||||
|
|
||||||
|
Node *LinkedList::deleteNode(int delValue)
|
||||||
|
{
|
||||||
|
if (NULL == head)
|
||||||
|
{
|
||||||
|
cout << "不存在链表,删除失败" << endl;
|
||||||
|
return head;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (head->data == delValue) // 当删除的节点是头节点时
|
||||||
|
{
|
||||||
|
Node *temp = head;
|
||||||
|
head = head->next;
|
||||||
|
delete temp;
|
||||||
|
return head;
|
||||||
|
}
|
||||||
|
|
||||||
|
Node *p = head;
|
||||||
|
while (p->next != NULL)
|
||||||
|
{
|
||||||
|
if (p->next->data == delValue)
|
||||||
|
{
|
||||||
|
Node *temp = p->next;
|
||||||
|
p->next = temp->next;
|
||||||
|
delete temp;
|
||||||
|
}
|
||||||
|
p = p->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (p != NULL && p->data == delValue) // 处理最后一个节点的情况
|
||||||
|
{
|
||||||
|
delete p;
|
||||||
|
p = NULL;
|
||||||
|
}
|
||||||
|
return head;
|
||||||
|
}
|
||||||
|
|
||||||
|
Node *LinkedList::reverseLinkedList()
|
||||||
|
{
|
||||||
|
Node *p = head;
|
||||||
|
Node *new_head = NULL;
|
||||||
|
Node *p_next = NULL;
|
||||||
|
while (p != NULL)
|
||||||
|
{
|
||||||
|
p_next = p->next;
|
||||||
|
p->next = new_head;
|
||||||
|
new_head = p;
|
||||||
|
p = p_next;
|
||||||
|
}
|
||||||
|
|
||||||
|
head = new_head; // 新头指针
|
||||||
|
return head;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LinkedList::print()
|
||||||
|
{
|
||||||
|
Node *p = head;
|
||||||
|
while (p != NULL)
|
||||||
|
{
|
||||||
|
cout << p->data << " ";
|
||||||
|
p = p->next;
|
||||||
|
}
|
||||||
|
cout << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
LinkedList list;
|
||||||
|
|
||||||
|
// 插入节点
|
||||||
|
list.insertNode(1);
|
||||||
|
list.insertNode(3);
|
||||||
|
list.insertNode(8);
|
||||||
|
list.insertNode(2);
|
||||||
|
|
||||||
|
// 测试打印
|
||||||
|
cout << "原始链表: ";
|
||||||
|
list.print();
|
||||||
|
cout << endl;
|
||||||
|
|
||||||
|
// 删除节点
|
||||||
|
list.deleteNode(3);
|
||||||
|
cout << "删除3后的链表: ";
|
||||||
|
list.print();
|
||||||
|
cout << endl;
|
||||||
|
|
||||||
|
// 反转链表
|
||||||
|
list.reverseLinkedList();
|
||||||
|
cout << "反序链表后: ";
|
||||||
|
list.print();
|
||||||
|
cout << endl;
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,106 @@
|
||||||
|
// 设计一个 Stack 的类,实现栈的基本操作,包括入栈、出栈和判断栈是否为空等。主要用于存放int数值或string字符串,并对其操作。
|
||||||
|
// 【提示】
|
||||||
|
// 1\) 使用数组实现,每一次重分数组空间的大小是原大小的2倍;
|
||||||
|
|
||||||
|
// 2\) Stack是栈的结构(FILO先进后出的)
|
||||||
|
#include <iostream>
|
||||||
|
#include <cstring>
|
||||||
|
#include <cstdlib>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
class Stack
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
int capacity; // 栈容量
|
||||||
|
int size; // 当前栈中元素个数
|
||||||
|
int *data; // 存放栈的数组
|
||||||
|
public:
|
||||||
|
Stack()
|
||||||
|
{
|
||||||
|
this->capacity = 10; // 初始容量
|
||||||
|
this->size = 0;
|
||||||
|
this->data = new int[this->capacity]; // 初始化栈数据数组
|
||||||
|
}
|
||||||
|
~Stack()
|
||||||
|
{
|
||||||
|
delete[] data; // 删除栈数据数组
|
||||||
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
void push(int value); // 入栈
|
||||||
|
int pop(); // 出栈
|
||||||
|
int isEmpty(); // 判断栈空否
|
||||||
|
};
|
||||||
|
|
||||||
|
void Stack::push(int value)
|
||||||
|
{
|
||||||
|
if (size == capacity)
|
||||||
|
{
|
||||||
|
cout << "栈满,重新分配空间中" << endl;
|
||||||
|
int newCapacity = capacity * 2;
|
||||||
|
int *newData = new int[newCapacity];
|
||||||
|
for (int i = 0; i < size; i++)
|
||||||
|
{
|
||||||
|
newData[i] = data[i];
|
||||||
|
}
|
||||||
|
delete[] data;
|
||||||
|
data = newData;
|
||||||
|
capacity = newCapacity;
|
||||||
|
cout << "空间分配完成,数据转存完毕" << endl;
|
||||||
|
}
|
||||||
|
data[size] = value;
|
||||||
|
cout << value << " 入栈成功" << endl;
|
||||||
|
size++;
|
||||||
|
}
|
||||||
|
|
||||||
|
int Stack::pop()
|
||||||
|
{
|
||||||
|
if (size == 0)
|
||||||
|
{
|
||||||
|
cout << "栈空" << endl;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int popValue = data[size - 1];
|
||||||
|
size--;
|
||||||
|
cout << "出栈成功" << endl;
|
||||||
|
return popValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int Stack::isEmpty()
|
||||||
|
{
|
||||||
|
if (size == 0)
|
||||||
|
{
|
||||||
|
cout << "栈空" << endl;
|
||||||
|
return 1; // 非 0 为栈空
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
cout << "栈不空" << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
Stack stk;
|
||||||
|
|
||||||
|
stk.push(10);
|
||||||
|
stk.push(12);
|
||||||
|
stk.push(16);
|
||||||
|
stk.push(5);
|
||||||
|
|
||||||
|
while (!stk.isEmpty())
|
||||||
|
{
|
||||||
|
cout << stk.pop() << " ";
|
||||||
|
}
|
||||||
|
cout << endl;
|
||||||
|
|
||||||
|
// stk.push(7);
|
||||||
|
|
||||||
|
stk.isEmpty();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue