單鏈表之C 實現

2021-06-18 01:58:35 字數 2427 閱讀 3317

在實現單鏈表時要注意對單鏈表的邏輯儲存、物理儲存有清晰的概念。

如上圖鍊錶已經完成,其邏輯結構如上。當需要對其進行操作,比如插入、刪除,通常需要引 入

指標,如上的ptr1、ptr2。在程式設計時一定要注意通過ptr1、ptr2對鍊錶結構的操作是正確的。 而

不僅僅是你覺得正確的。

下面給大家看下我的單鏈表的實現,錯誤之處還請指正。

1、vc6實現,包括三個檔案:sll.h、sll.c、main.c

2、sll.h單鏈錶類、結點類的說明

#ifndef _sll_h_

#define _sll_h_

//加以下兩句是為了使煉表中包含的資料型別可以更靈活

#define datatype int

#define endofdata 0

//單鏈表的節點

class node

;//單鏈表,其中儲存的元素為整數

class sll

;#endif

3、sll.c單鏈錶類成員函式的實現

#include #include "sll.h"

using namespace std;

sll::sll() //建構函式

sll::~sll() //析構函式

}void sll::create()

ptrnode->data = data;

flagnumone = false;

} else

}if(head->data == endofdata) //鍊錶為空的情況 }

int sll::getlength()

return num;

}void sll::del(datatype num)

if(ptrnodeahead->data == num) //找到num結點

else //如果num節點不是頭結點

}else //鍊錶搜尋結束也未找到num結點

}}bool sll::insert(int pos,datatype num)

node *ptrnodeahead = head;

node *ptrnodefollow = null;

int tmpnum = 0;

while(1) //獲取插入位置的指標,ptrnodeahead指向待插入的位置,ptrnodefollow指向帶插入位置的下一結點

ptrnodefollow = ptrnodeahead;

ptrnodeahead = ptrnodeahead->next;

} //以下兩句將待插入結點的資料準備好

node *ptrtmpnode = new node;

ptrtmpnode->data = num;

if(ptrnodeahead == head) //如果是插入頭結點 /*

else if(ptrnodeahead->next == null) */

else //插入中間節點,此種方法永遠也不能插入尾結點,插入是前向的

return true;

}node* sll::gethead()

void sll::reverse()

head = ptrnodefllow;

}void sll::print()

cout

++index;

ptrnode = ptrnode->next; //鍊錶向下延展

} return -1; //未找到num結點返回-1

C 單鏈表實現

1 單向鍊錶 單向鍊錶 include include class cnode 節點類 class clist 鍊錶類 cnode movetrail cnode pnode 移動到尾節點 return ptmp void addnode cnode pnode 新增節點 else m nodesu...

c 實現單鏈表

include include using namespace std typedef int datatype struct linknode 建立乙個節點 class slist void swap slist s slist const slist s head null tail null ...

單鏈表(C實現)

ifndef list h define list h typedef struct node node typedef struct list list initlist int insertlist list l,void data,int size node findnodebykey lis...