購物表(動態鍊錶) 鬧鐘提醒(多執行緒)

2021-08-31 15:46:47 字數 3009 閱讀 1824

基本鍊錶的應用

增 刪 查 找 排 模糊查詢

核心**如下:

#include

#include

#include

#include

#include

#include

#include

#define len sizeof(stu)

typedef

struct student//定義乙個結構體

;typedef

struct node//建立乙個指標域,結構域

stu;

int z=1;

int n;

inttips()

//選單

stu*head=

(stu *

)malloc

(len)

;

stu *

creat()

//建立鍊錶

void

print

(stu * head)

//顯示}}

stu *

del(stu * head,

int hour,

int minu,

int sec)

//刪除(通過時間來刪除)

if(p1->date.hour==hour&&p1->date.minu==minu&&p1->date.sec==sec)

else

printf

("刪除成功\n");

n=n-1;

free

(p1);}

else

printf

("沒有這個物品!\n");

}return head;

}

stu *

dels

(stu * head,

char name)

//刪除(通過名稱刪除)if(

strcmp

(p1->date.name,name)==0

)else

printf

("刪除成功\n");

n=n-1;

}else

printf

("沒有這個物品!\n");

}return head;

}

stu *

search

(stu * head,

int hour,

int minu)

//搜尋(時間搜尋)

if(p1->date.hour==hour&&p1->date.minu==minu)

else

printf

("沒有這個物品!\n");

}return head;

}

stu *

seach

(stu * head,

char name)

//模糊查詢(姓名模糊查詢)}if

(number==0)

printf

("沒有這個物品!\n");

}return head;

}

stu *

change

(stu * head,

char name)

//修改(按名稱)if(

strcmp

(p1->date.name,name)==0

)else

printf

("沒有這個物品!\n");

}return head;

}

stu *

insert

(stu * head, stu * stud)

//新增

else

if(p1->date.num>=p0->date.num)

else

}else

} n=n+1;

return head;

}

stu *

pall

(stu * head)

//排序(距離)}}

printf

("排序成功\n");

print

(head);}

return head;

}

stu *

palls

(stu * head)

//排序(名字)}}

printf

("排序成功\n");

print

(head);}

return head;

}

stu*

maining()

break;}

case2:

break;}

case3:

//名字刪除

break;}

case5:

break;}

case4:

break;}

case6:

break;}

case7:

break;}

case8:

break;}

case9:

break;}

case10:

break;}

}}}

stu*

time()

//(鬧鐘)

// printf("%d\n",p1);

}// printf("%d",head);}}

void

*tprocess1

(void

* args)

//執行緒1

void

*tprocess2

(void

* args)執行緒2

intmain()

//多執行緒

```總結:動態鍊錶與多執行緒的運用需要十分注意。

多執行緒程式設計 執行緒安全的鍊錶

接下來寫乙個執行緒安全的鍊錶 雙鏈表中每個節點都有乙個指標指向列表中下乙個節點,還有乙個指標指向前乙個節點。其中不變數就是節點a中指向 下乙個 節點b的指標,還有前向指標。為了從列表中刪除乙個節點,其兩邊節點的指標都需要更新。當其中一邊更新完成時,不變數就被破壞了,直到另一邊也完成更新 在兩邊都完成...

lock free 實現多執行緒安全鍊錶

lock free 實現的多執行緒鍊錶通常無法避免 aba問題。aba 問題的實質就是我們剛釋放的記憶體可能會被馬上又分配出來,被其他執行緒又放入到煉表裡了,導致interlock函式判斷鍊錶節點沒有改變 實際上節點已經被刪除過一次了,鍊錶發生了改變 而導致錯誤。那麼解決方法最有3中 一種不使用 i...

靜態鍊錶和動態鍊錶

鍊錶分為兩種 動態和靜態 動態的結合相關函式能動態開闢記憶體,特點就是不會浪費記憶體單元 靜態鍊錶則沒有這個優點。靜態鍊錶和動態鍊錶是線性表鏈式儲存結構的兩種不同的表示方式。靜態鍊錶的初始長度一般是固定的,在做插入和刪除操作時不需要移動元素,僅需修改指標。動態鍊錶是相對於靜態鍊錶而言的,一般地,在描...