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