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

2021-10-02 03:37:56 字數 2244 閱讀 9557

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...