基本鍊錶的應用
增 刪 查 找 排 模糊查詢
核心**如下:
#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...
靜態鍊錶和動態鍊錶
鍊錶分為兩種 動態和靜態 動態的結合相關函式能動態開闢記憶體,特點就是不會浪費記憶體單元 靜態鍊錶則沒有這個優點。靜態鍊錶和動態鍊錶是線性表鏈式儲存結構的兩種不同的表示方式。靜態鍊錶的初始長度一般是固定的,在做插入和刪除操作時不需要移動元素,僅需修改指標。動態鍊錶是相對於靜態鍊錶而言的,一般地,在描...