C 雙鏈表練習,實現球在螢幕中滾動,排坑

2022-07-23 23:30:35 字數 1904 閱讀 6524

#include #include 

#include

//定義乙個雙鏈表節點

struct

node;//

定義list存放node指標

struct

list;//

初始化雙鏈表節點

node* init_node(int x,int

y)//

初始化雙鏈表

list*init_list()

//節點的鏈結傳參,第乙個引數資料在前,第二個引數資料在後

void link_node(node* n1, node*n2)

//雙鏈表鏈結

list* push_head(list* list, node*n1)

else

return

list;}//

從頭開始雙鏈表

void list_head_printf(list*list)

else

}}void push_end(list* data, node*temp1) //

雙鏈表尾插

else

}void del_node(list* list, int num) //

雙鏈表刪除某個位置的節點 傳參:1.雙鏈表節點,2,需要刪除的位置

if (list->size < num) //

判斷查詢的位置是否和空間大小範圍內

if (list->size == 1) //

判斷刪除雙鏈表節點時,雙鏈表只有1個節點

if (list->size == 2) //

判斷刪除雙鏈表節點時,雙鏈表只有2個節點

if (list->size > 2) //

判斷刪除雙鏈表節點時,雙鏈表只有2個以上個節點

else

}n++;}}

}int

main()

int a = 1

;

while (1

)

if (temp->z == 0

) }}

endbatchdraw();

sleep(

20);

}closegraph();

return0;

}

目前遇到的問題是,在圖形介面畫圖的時候,使用乙個區域性變數定義乙個變數為0和1,用if語句判斷雙鏈表結構成員 y的值來控制球移動的座標,但是會出現球在介面中不會整齊的滾動,但是將這個變數定義在雙鏈表節點成員中時,則球會按照設定的方式在螢幕中整齊的滾動,目前原因未知。

方法一可以達成功能實現,但是 方法二無法達成功能實現

//

方法一:

while (1

)

if (temp->z == 0

) }}

endbatchdraw();

sleep(

20);

}//方法二:

int a = 1

;

while (1

)

if (a == 0

) }}

endbatchdraw();

sleep(

20);

}

目前已經找到問題,需要判斷每個球在y軸座標的變化,那麼這時需要在雙鏈表成員中為該雙鏈表定義乙個標識,每當球的y軸座標發生變化時,也就是對應的temp->y的值來判斷是否在圖形圖介面座標範圍內,

這樣才能實現每乙個球可以自由的在介面中移動,如果單純使用變數在雙鏈表外部定義,則會導致temp->y的值不受介面座標的控制而發生球不按設定來移動.

困擾了多天的問題,當找到問題並解決時,才發現原理那麼簡單..

C 實現雙鏈表

主要實現了頭插,頭刪,尾插尾刪,任意位置的插入刪除,鍊錶的逆置以及鍊錶的深淺拷貝 在這裡說明一下,鍊錶用的最多的就是資料的插入什麼的,所以這裡解決深淺拷貝問題,用的是深拷貝,單鏈表,順序表也是一樣,都是用了深拷貝。雙向煉表相比較於單鏈表而言,相對複雜一點,有兩個指標,來進行實現鏈式結構 先面試具體 ...

c 實現單 雙鏈表

單鏈表 include using namespace std typedef int datatype struct slistnode 在c 中結構體也就是乙個類 typedef slistnode node class slist slist const slist s head null t...

c 實現雙鏈表基本操作

include include include include c 實現雙鏈表的基本操作 using namespace std typedef struct student dnode 創立鍊錶 dnode creat else cycle 0 head head next head pre nu...