star.h標頭檔案 包括一些結構體 巨集定義 介面等
#pragma once
#ifndef _star_h_
#define _star_h_
#define max_star 100
#define screen_width 800
#define screen_height 600
#define max_step 7
#define max_radius 3
#define bottom_margin 100
//引入鍊錶
typedef
struct _linknode dlinklist, dlinknode;
//星星狀態
enum status
;//星星的結構體
typedef
struct
star;
//鍊錶的介面
bool
initlist
(dlinklist& list)
;bool
listinsert_back
(dlinklist& list, dlinknode& node)
;bool
delete_linknode
(star*
& tmp,dlinknode*
&p);
#endif
// !_star_h_
starlink.cpp 裡面是共享鍊錶的介面函式的實現
#include
#include
#include
"star.h"
//雙向鍊錶的初始化函式
bool
initlist
(dlinklist &list)
//尾插法插入雙向鍊錶節點的實現
bool
listinsert_back
(dlinklist &list, dlinknode &node)
//雙向鍊錶刪除節點
bool
delete_linknode
(star*
&tmp, dlinknode*
& p)
else
p = p-
>prev;
//引數p 移向它的前乙個節點 以防tmp被釋放以後發生訪問衝突
delete p1;
return
true
;}
浪漫星空.cpp 裡面是星空**的實現
#include
#include
#include
#include
#include
"star.h"
using
namespace std;
dlinknode* p =
null
;//定義為全域性指標的意思是刪除節點的時候需要操作p指標
//初始化星星
void
initstar
(star*
&star)
//實現星星的移動
void
movestar
(star*
&tmp)
else
if(tmp-
>stat == up)
}else
if(tmp-
>stat == left)
else
if(tmp-
>stat == right)
setfillcolor
(tmp-
>color)
;solidcircle
(tmp-
>x, tmp-
>y, tmp-
>radius);}
intmain
(void
)//遍歷雙向鍊錶載入星星到畫板
p =&(list-
>node)
;while
(p)//遍歷鍊錶實現星星的移動
while
(list-
>node.next)
sleep(30
);p =
&(list-
>node);}
closegraph()
;system
("pause");
return0;
}
雙向鍊錶實現浪漫星空
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...
linux核心鍊錶
鍊錶是一種常用的資料結構,它通過指標將一系列資料節點連線成一條資料鏈。相對於陣列,鍊錶具有更好的動態性,建立鍊錶時無需預先知道資料總量,可以隨機分配空間,可以高效地在鍊錶中的任意位置實時插入或刪除資料。鍊錶的開銷主要是訪問的順序性和組織鏈的空間損失。一 鍊錶結構 單鏈表結構如下 雙鏈表結構如圖 st...
linux核心鍊錶
include include struct list head struct mylist void list add struct list head new,struct list head prev,struct list head next void list add tail struc...