❶ 可以用 C 語言實現「異質鏈表」嗎
可以
而且並不難。
用c語言實現多態性的基本思想是使用void*指針,在存儲鏈表結點值的時候將地址存入。
也就是說結點中存儲的值並不是具體的值,而是一個地址,由於這個地址是main中的本地變數,所以不用擔心它會被摧毀。
在讀取的時候,進行強制類型轉換即可。
❷ 如何利用異質鏈表實現不同人員信息的錄入,刪除,輸出,查找
是不是可以這樣:
1 創建一個表示人員的基類,基類中設置一些虛函數;
2 由該基類派生各類人員的子類,子類中實現基類中的虛函數;
3 建立基類對象的鏈表(鏈接指針類型為基類)。
❸ 請問如何用c語言實現異質鏈表
有一個想法(沒有實驗,不知可行的通):
建一個結點類型為
struct Node{
int type; // 表示 「異質鏈表」 結點的類型
void * pnode; // 指向 「異質鏈表」 結點(訪問 「異質鏈表」 結點時,根據type進行指針類型轉換)
struct Node *next;
};
的鏈表plist。
遍歷鏈表plist時,對於每一個結點的處理通過if 或 switch語句來區分「異質鏈表」 結點的類型並分別處理。
不過對於 「異質鏈表」 ,最好還是使用C++,利用C++多態性很容易實現。
❹ C語言,用C語言實現一個異質鏈表的基礎功能(創建插入刪除等),求思路與開端。
struct Node
{
void * pData;
struct Node * pNext;
};
struct LinkedList
{
struct Node * pHead;
int count;
};
struct Node *constructNode(void *pData)
{
struct Node *p = (struct Node*)malloc(sizeof(struct Node));
if (NULL == p) {
return NULL;
}
p->pData = pData;
p->pNext = NULL;
return p;
}
void destructNode(struct Node *pNode)
{
free(pNode->pData);
free(pNode);
}
struct Node *getLastNode(struct LinkedList * pList)
{
struct Node *p = pList->pHead;
if (NULL != p) {
while (p->pNext != NULL) {
p = p->pNext;
}
return p;
}
return NULL;
}
void initLinkedList(struct LinkedList * pList)
{
pList->pHead = NULL;
pList->count = 0;
}
int appendNode(struct LinkedList * pList, void *pData)
{
struct Node *pNewNode = constructNode(pData);
struct Node *pLastNode = getLastNode(pList);
if (NULL != pNewNode) {
if (NULL != pLastNode) {
pLastNode->pNext = pNewNode;
} else {
pList->pHead = pNewNode;
}
++pList->count;
return pList->count;
}
return -1;
}
❺ 用c語言編寫簡易人事管理系統主要有工人號碼,姓名,出生日期,工資
摘要 構建基類person,具體包含「姓名」、「性別」、「年齡」、「身份證號碼」這四個屬性。從基類派生出5個派生類,即本科生、脫產研究生、在職研究生、職工和教師。