C++ 数据结构算法 学习笔记(1)-顺序表
需求设计
“我要看小星星!”,小芳轻轻的对程序员男友 Jack 说。
“亲爱的,现在是冬天,哪里有小星星耶?” “我不,我就要嘛!” 看着可爱带着小小野蛮的女友,Jack 沉思了一会,说了一句,“好吧!” 默默的回到了电脑前… …
一个小时后,做出来如下的效果:
如上实现代码为:
#include "self_write_star.h"
void init_star(struct STAR& star)
{
int rgb = 0;
star.x_axis = rand() % SCREEN_WIDTH;
star.y_axis = rand() % SCREEN_HEIGHT;
star.radius = 1 + (rand() % RADIUS_MAX);
star.step = 1 + (rand() % STEP_MAX);
rgb = 255 * (star.step+5 / STEP_MAX);
star.colour = RGB(rgb, rgb, rgb);
star.stat = LEFT;
}
void move_star(SqList& l,int i)
{
setfillcolor(BLACK);
solidcircle(l.elems[i].x_axis, l.elems[i].y_axis, l.elems[i].radius);
if (l.elems[i].stat == UP)
{
l.elems[i].y_axis -= l.elems[i].step;
}
else if (l.elems[i].stat == DOWN)
{
l.elems[i].y_axis += l.elems[i].step;
}
else if (l.elems[i].stat == LEFT)
{
l.elems[i].x_axis -= l.elems[i].step;
}
else if (l.elems[i].stat == RIGHT)
{
l.elems[i].x_axis += l.elems[i].step;
}
setfillcolor(l.elems[i].colour);
solidcircle(l.elems[i].x_axis, l.elems[i].y_axis, l.elems[i].radius);
;
}
int main()
{
bool quit = false;
initgraph(SCREEN_WIDTH, SCREEN_HEIGHT);
struct STAR star;
SqList StarList;
initList(StarList);
for (int i = 0; i < MAX_SIZE; i++)
{
init_star(star);
listAppend(StarList,star);
}
for (int i = 0; i < MAX_SIZE; i++)
{
setfillcolor(StarList.elems[i].colour);
solidcircle(StarList.elems[i].x_axis, StarList.elems[i].y_axis, StarList.elems[i].radius);
}
while (quit == false)
{
for (int i = 0; i