資料結構之單鏈表簡單操作

2021-08-22 07:27:16 字數 2245 閱讀 4758

(一)單鏈表

單鏈表結構:資料域_data和指標域_pnext,其基本操作如下列**所示,附有注釋說明:

//單鏈表結構

typedef int elemtype;

typedef struct node

node,*pclist;

//購買節點

node* buynode()

//釋放節點

void freenode(node* pnode)

//初始化鍊錶 購買頭結點

void init_list(pclist plist)

//單鏈表頭插

bool insert_head(pclist plist,elemtype key)

//單鏈表尾插

bool insert_tail(pclist plist,elemtype key)

//查詢某個值是否在鍊錶中 並返回其節點

node* search(pclist plist,elemtype key)

} return null;

}//查詢某個值在單鏈表中的前驅

node* search_prev(pclist plist,elemtype key)

} return null;

}//刪除某個節點

//首先查詢要刪的節點是否在鍊錶中

//如果存在則需要找到被刪節點的前驅

//被刪節點的前驅的_pnext域指向被刪節點的後繼

//最後free調要刪的節點

bool delete_node(pclist plist,elemtype key)

//統計鍊錶長度

int getlength(pclist plist)

return len ;

}//判斷鍊錶是否為空

bool isempty(pclist plist)

//銷毀鍊錶

void destroy(pclist plist)

}//列印單鏈表

void show(pclist plist)

printf("\n");

}//鍊錶逆置

void reserve(pclist plist)

}

(二)常見鏈表面試題(部分,後面繼續更新)

(1)判斷鍊錶是否有環

//判斷鍊錶是否有環

bool iscircle(pclist plist)

if(fast == low)

}return false;

}//測試用例

/*node* p = search(&head1,3);

node* q= search(&head1,10);

q->_pnext = p ;

if(iscircle(&head2))

if(fast == low)

}fast = plist;

while(fast ->_pnext && low->_pnext ) }

return null;

}//找到環的入口位址 解法二 不是最優

node* finde_circle1(pclist plist)

if(fast == low)

}node *meetnode = low;

node* p = meetnode;

int count = 1;

while( p->_pnext != meetnode)

node *pnode1 = plist;

for(int i = 0 ; i < count;i++)

node *pnode2 = plist;

while(pnode1 != pnode2)

return pnode1;

}//測試用例

/* node* pq = finde_circle(&head1);

if(pq)

else

return p0;

}//測試用例

/* int k ;

cin>>k;

node* pk = find_k_list(&head1,k);

show(&head1);

if(pk)

} return low;

}//測試用例

/* node *mid = find_middle_list(&head2);

if(mid)

while(!st.empty())

cout《等待更新。。。。。

資料結構之單鏈表操作

編寫乙個程式,實現單鏈表的各種基本運算 假設單鏈表的元素型別為char 1 初始化單鏈表h 2 採用尾插法依次插入元素a,b,c,d,e 3 輸出單鏈表h 4 輸出單鏈表h長度 5 判斷單鏈表h是否為空 6 輸出單鏈表h的第3個元素 7 輸出元素a的位置 8 在第4個元素位置上插入元素f 9 輸出單...

資料結構之單鏈表

date 08 07 06 descript 單鏈表的實現與應用 public class linlist public node gethead 定位函式 public void index int i throws exception if i 1 current head.next int j...

資料結構之單鏈表

鍊錶 儲存結構的一種,包含兩個部分,資料域和指標域,相對於順序儲存結構來說,插入和刪除的演算法時間複雜度只為o 1 定義 定義 typedef struct node linklist linklist,指標指向每乙個元素 typedef struct nodenode 以下為簡單的c語言實現 in...