雙向鍊錶實現浪漫星空

2021-10-02 03:37:56 字數 2696 閱讀 9178

star.h標頭檔案** 包括函式的宣告還有鍊錶的介面

#pragma once

#ifndef _star_h_

#define _star_h_

#define max_star 150

#define screen_width 800

#define screen_height 600

#define max_step 7

#define max_radius 3

#define bottom_margin 100

// 星星狀態

enum status

;//星星的結構體

typedef

struct

star;

//引入鍊錶

typedef

struct _linknode dlinklist, dlinknode;

//鍊錶的介面

bool

initlist

(dlinklist*

&list)

;bool

listinsert_back

(dlinklist*

&list,dlinknode*

&node, star &star)

;bool

delete_linknode

(dlinknode*

&tmp)

;#endif

// !_star_h_

starlink.cpp 裡面是鍊錶的實現函式 另外用乙個cpp檔案

#include

#include

"star.h"

//1.初始化乙個空的雙向鍊錶

bool

initlist

(dlinklist*

&list)

list-

>next =

null

; list-

>prev =

null

;return

true;}

//2.尾插法 插入鍊錶節點

bool

listinsert_back

(dlinklist*

&list, dlinknode*

&node,star &star)

last = list;

while

(last-

>next) last = last-

>next;

node-

>next =

null

; last-

>next = node;

node-

>prev = last;

node-

>star = star;

return

true;}

//3.刪除鍊錶的節點

bool

delete_linknode

(dlinknode*

&tmp)

else

tmp = tmp-

>prev;

//刪除以前把tmp移向上乙個節點 以防止tmp被釋放

delete p;

//媽的坑了我兩天 以後記住了

return

true

;}

浪漫星空的cpp檔案 裡面是星空的函式和實現

#include

#include

#include

#include

#include

"star.h"

using

namespace std;

//初始化星星

void

initstar

(star &star)

//實現星星的移動

void

movestar

(dlinknode*

&tmp)

//if (tmp-> y < 0) tmp->y = screen_height- bottom_margin;

}//根據星星的隨機步長畫新的星星

setfillcolor

(tmp-

>star.color)

;solidcircle

(tmp-

>star.x, tmp-

>star.y, tmp-

>star.radius);}

intmain

(void

)//遍歷鍊錶列印星星

dlinknode* tmp = list-

>next;

while

(tmp)

//cout << "----------開始遍歷節點------------" << endl;

//遍歷鍊錶移動星星

linux核心共享鍊錶實現浪漫星空

star.h標頭檔案 包括一些結構體 巨集定義 介面等 pragma once ifndef star h define star h define max star 100 define screen width 800 define screen height 600 define max st...

雙向鍊錶實現

template class link link link pre null,link ne null void operator new size t void operator delete void ptr template link link freelist null template v...

雙向鍊錶實現

雙向鍊錶的應用背景主要是單向鍊錶只能順序訪問,逆序訪問單向鍊錶 尤其是較大的單向鍊錶是一件極其費時費力的工作 相比於單向鍊錶,雙向鍊錶增加了乙個域,這個域裡面增加了乙個指向前驅節點的指標,使得整個鍊錶可以順序訪問或者逆序訪問,來去自如 定義的雙向鍊錶的標頭檔案,裡面包含了雙向鍊錶的宣告和資料型別的定...