刪除一個無頭單鏈表的非尾結點(不能遍歷連結串列)
思路:
- 之前刪除連結串列中某個位置的結點必須找到該節點的prev結點,並且需要遍歷,而此題不能遍歷,則之前的方法行不通。那麼就想到了另一種方法——替換法。
替換法:
- 既然要刪除該結點,那麼我們可以將該結點的next結點的值賦給該結點,再刪除這個next結點,這樣就相當於刪除了該結點。
程式碼:
void EraseNotTailNode(pNode pos)
{
pNode pDel = NULL;
if (pos == NULL && pos->next == NULL)//排除空和尾結點的情況
{
return ;
}
pDel = pos->next;
pos->data = pDel->data;//傳值
pos->next = pDel->next;
free(pDel);
pDel = NULL;
}
圖展示:
相關推薦
刪除一個無頭單鏈表的非尾結點(不能遍歷連結串列)
思路: 之前刪除連結串列中某個位置的結點必須找到該節點的prev結點,並且需要遍歷,而此題不能遍歷,則之前的方法行不通。那麼就想到了另一種方法——替換法。 替換法: 既然要刪除該結點,那麼我們可以將該結點的next結點的值賦給該結點,再刪除這個nex
在無頭單鏈表的一個結點前插入一個結點(不能遍歷連結串列)
思路: 由於無頭單鏈表只能找到某一個結點的next結點,而不能不利用遍歷的方法找到某一個結點的prev結點,所以之前的遍歷方法在此處不能使用。我們雖然不能在該結點前插入結點,但是能在該結點後插入結點,所以先在該結點後插入結點,再將該結點與新插入結點的值交換即
C++ 單鏈表基本操作分析與實現 連結串列 連結串列是一種物理儲存單元上非連續、非順序的儲存結構,資料元素的邏輯順序是通過連結串列中的指標連結次序實現的。連結串列由一系列結點(連結串列中每一個元素稱為結點)組成,結
連結串列 連結串列是一種物理儲存單元上非連續、非順序的儲存結構,資料元素的邏輯順序是通過連結串列中的指標連結次序實現的。連結串列由一系列結點(連結串列中每一個元素稱為結點)組成,結點可以在執行時動態生成。每個結點包括兩個部分:一個是儲存資料元素的資料域,另一個是儲存下一個結點地址的指標域。 相比於線性表
C 將一個單鏈表拆成3個迴圈連結串列,其中一個是純數字,一個純字母,一個其他字元
前面相關操作在這呢,這個函式依託於此 //結構體 typedef struct Node { ElementType data; struct Node * next; } LNode, * LinkNode; //將一個單鏈表拆成3個迴圈連結串列,其中一個是純數字
單鏈表反轉,返回反轉後連結串列頭結點--360測試實習生面試題
為了正確反轉一個連結串列,需調整指標指向,例如i,m,n是3個相鄰結點,假設結點i之前的指標已調整完畢,,這些結點的next指標都指向前面一個結點,遍歷到結點m時,需要調整結點的next指標,避免連結串列斷開,在調整之前需儲存n,然後找反轉後連結串列的頭結點(即原連結串列的尾
9006:單鏈表的建立和遍歷
Problem Description 輸入N個整數,按照輸入的順序建立單鏈表儲存,並遍歷所建立的單鏈表,輸出這些資料。 Input 輸入資料有多組,每組資料佔兩行;每組第一行為一個數字N(0<N<=50);第二行有N個整數。 Ou
單鏈表的排序(關鍵詞:連結串列/單鏈表/排序/快速排序/歸併排序)
https://leetcode.com/problems/sort-list/ https://leetcode.com/problems/sort-list/discuss/46807/Quick-sort-Merge-sort-Python https://leetcode.com
單鏈表的建立、遍歷、與增刪改查
前言:我先這篇文章的目的是為了分享自己所學的東西。 連結串列是一種很常見的資料結構,但是因為與指標的結合,使得它變得讓人頭疼,初學者往往會被其搞得暈頭轉向,好了廢話不多說下面開始。 1、建立連結串列 首先是建立連結串列,這個大家應該都會 2、初始化連結串列 n
C語言:迴圈單鏈表的建立,遍歷,插入
/* 1.迴圈單鏈表的建立,由尾節點指向該連結串列, 2.迴圈連結串列遍歷 3.求連結串列的長度 4.向連結串列中插入元素 */ # include <stdio.h> # include <malloc.h> typedef stru
Java學習之單鏈表建立以及正向遍歷和反向遍歷方法
連結串列是一種儲存單元上非連續、非順序的儲存結構,資料元素的邏輯順序是通過連結串列中的指標連結次序實現的。原先是在C語言的學習中有遇到過,Java中的連結串列第一次遇到是在一家公司的面試題中。連結串列的種類有單鏈表、雙端連結串列、有序連結串列,以下就單鏈表做一個簡單的討論。
合併有序單鏈表並排序(遍歷一次)
LinkList MergeLinkList(LinkList L1, LinkList L2) { LinkList PnewHead = NULL; LinkList PL1 = L1; LinkList PL2 = L2;
【C】利用單鏈表資料結構實現通訊錄,連結串列的增刪改查
C語言中實現連結串列,是需要利用到C語言中比較難的結構體與指標才能實現。 結構體中放一個指向後接節點的指標與每一個結點應該存放的資訊。 下面做一個命令列的通訊錄來說明連結串列的增刪改查這個問題。 一開始讓使用者輸入連結串列,按1可以輸出,按3可以刪除。 可以修改: 可以
排序單鏈表、 並兩個有序連結串列, 合併後依然有序
建立連結串列節點結構 <span style="font-family:Microsoft YaHei;">typedef struct strNode { struct strNo
malloc的連結串列,建立連結串列,遍歷連結串列,插入節點,刪除節點
#include <iostream> #include <malloc.h> #include <stdlib.h> using namespace std; //節點 typedef struct Node { int d
單鏈表相關(1)從尾到頭列印連結串列、刪除一個無頭連結串列的非尾結點
1、從尾到頭列印連結串列 2、刪除一個無頭連結串列的非尾結點 單鏈表結構以及Find函式參見 2016-1-2 13:56 發表部落格 void Print_T_to_H(SListNode*&am
從無頭單鏈表中刪除節點
刪除無頭單鏈表: 程式實現很簡單,主要是思路如果打不開的話,就無從下手。 如果是帶有頭節點的連結串列,直接從頭部遍歷,找到需要刪除的節點,然後直接刪除 刪除的方式,加入目前的節點為node ,前一個節點即為pre pre->next = node->next;
逆置單鏈表、替換法之無頭單鏈表的插入與刪除
1. 從尾到頭列印單鏈表 我們知道,單鏈表只能夠通過前面結點來找到後一個結點,不能直接通過後一個結點來找前一個結點,所以如何先列印後面的元素,在列印前面的元素。可以想到運用遞迴,設頭結點為first 第一次函式呼叫:first->next 第
無頭單鏈表的插入刪除問題
對於單鏈表的插入刪除問題,在之前的文章中已經介紹過,今天要介紹的是無頭單鏈表的插入和刪除問題。這裡所指的無頭單鏈表指的是假設我們只知道單鏈表的某個部分,而不是全部,要對其進行插入和刪除操作,如下圖: 那麼,對於這種的單鏈表,我們如何對其進行插入和刪除操作呢?首先我們來看
【課程設計】【資料結構】編制一個演示單鏈表的建立、列印、查詢、插入、刪除等操作的程式。
實驗題目 編制一個演示單鏈表的建立、列印、查詢、插入、刪除等操作的程式。 1.需求分析 要求用TC編寫一個演示程式,首先建立一個帶頭結點的整型單鏈表,然後根據使用者選擇,能夠在單鏈表的任意位置插入、刪除結點,以及確定某一元素在單鏈表中的位置。 1.1 建立單鏈
資料結構之—線性表之—淺談單鏈表有頭結點和無頭節點
有頭結點的連結串列統一了演算法的實現,無頭節點減少了節點個數,但是隻有根據實際情況選用真正的有無頭節點連結串列 待續://程式碼實現 待續://程式碼實現 待續://程式碼實現 /*****************************************