1. 程式人生 > >只知道某個單向連結串列的中的某個指標,且該指標不是尾指標,如何刪除該節點。

只知道某個單向連結串列的中的某個指標,且該指標不是尾指標,如何刪除該節點。

基本思想:將該指標的後一個節點的資料拷貝到該節點中,直到該節點變成尾節點,這時刪除該節點, 時間複雜度o(n) 

pseuducode

typedef struct node{
         void * data;
         struct node *next;
}node_t

node *ptr;
node *pre;
void   *retrun_data;

pre = ptr;
retrun_data = ptr->data;
ptr = ptr->next;
while(ptr!=NUll)
        pre->data = ptr->data;
        pre = ptr;
        ptr = ptr->next;
end while
free(pre);
         
          
          

相關推薦

知道某個單向連結串列某個指標指標指標如何刪除節點

基本思想:將該指標的後一個節點的資料拷貝到該節點中,直到該節點變成尾節點,這時刪除該節點, 時間複雜度o(n)  pseuducode typedef struct node{ void * data; struct node *nex

C++單向連結串列-查詢某個節點

本演算法從下標1開始遍歷 利用雙指標的形式遍歷, 大大提高了程式碼的查詢速度: ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) { if (pListHead == NULL || k ==0)

演算法---輸出單向連結串列倒數第K個節點

    輸出單向連結串列中倒數第K個節點,比如我們現在有int型別的1,2,3,4,5,6,7,8組成的一個單向連結串列,求倒數第三個元素。如圖所示:     我們正常的思路就是從後往前推倒數第K個元素,這裡有這樣幾個問題。首先是單向連結串列的限制,連結

輸出單向連結串列倒數第k個結點/華為機試(C/C++)

題目描述 輸入一個單向連結串列,輸出該連結串列中倒數第k個結點,連結串列的倒數第1個結點為連結串列的尾指標。 連結串列結點定義如下: struct ListNode {       int  

程式設計師面試一百題-09-查詢單向連結串列倒數第k個結點

1-題目 : 輸入一個單向連結串列,輸出該連結串列中倒數第k個結點,連結串列的倒數第0個結點為連結串列的尾指標。 2-思路 : 2.1-錯誤思路 : 為了得到倒數第k個結點,很自然的想法是先走到連結串列的尾端,再從尾端回溯k步,可是單向連結串列只有從前往後的指標而沒有從後往前的指標。

單向連結串列快速查到倒數第n個節點

操作方法和步驟: (1)定義2個指標p1,p2。 (2)使用迴圈讓p2指向順數第n個節點,同時p1指向第頭結點; (3)然後,p1和p2同時移動,直到p2指向NULL,此時p1應該指向倒數第n個節點。 iNode * GetLastNnode(iNode *

單向連結串列刪除指定值的節點(OJ 不用看這題)

題目 描述 輸入一個單向連結串列和一個節點的值,從單向連結串列中刪除等於該值的節點,刪除後如果連結串列中無節點則返回空指標。 連結串列結點定義如下: struct Lis

刪除單向連結串列的重複節點

題目: 在一個排序(保證重複節點連在一塊)的連結串列中,存在重複的結點,請刪除該連結串列中重複的結點,重複的結點不保留,返回連結串列頭指標。如 輸入連結串列:1->2->3->3->4->4->5 ,處理後為:1->2

刪除單向連結串列的某一個節點

已知一個單向連結串列的表頭head,寫出一個刪除某一個節點的演算法,要求先找到此節點,然後刪除。 #include<iostream> usingnamespace std;   typedefstruct node   {       int numb

[程式設計題]從單向連結串列刪除指定值的節點

Talk is cheap, show me the code. 一、問題描述 輸入一個單向連結串列和一個節點的值,從單向連結串列中刪除等於該值的節點,刪除後如果連結串列中無節點則返回空指標。 連結串列結點定義如下: struct ListNode

華為OJ:輸出單向連結串列倒數第k個結點

輸入一個單向連結串列,輸出該連結串列中倒數第k個結點,連結串列的倒數第0個結點為連結串列的尾指標。 連結串列結點定義如下: struct ListNode {       int       m_nKey;       ListNode* m_pNext; }; 詳細描述

單向連結串列查詢倒數第K個數

問題 單向連結串列如果要找某一元素或者遍歷連結串列,只能從頭節點開始,所以如果我們用普通方法查詢倒數第K個數,要分兩步:第一步:先遍歷連結串列中元素的個數,第二步:從頭開始遍歷,遍歷到連結串列個數-k

單向連結串列如何快速查到倒數第n個節點

(1)定義2個指標p1,p2。 (2)使用迴圈讓p2指向順數第n個節點; (3)然後,p1和p2同時移動,直到p2指向NULL,此時p1應該指向倒數第n個節點。 如果n=1,那麼p1指向倒數第一個節點,這是很常見的演算法。

設計一個演算法刪除遞增有序連結串列值大於mink小於maxk的所有元素(mink和maxk是給定的兩個引數其值可以和表的元素相同也可以不同)

語言:C++ #include <iostream> using namespace std; typedef struct LNode { int data; LNode *next; }LNode,*LinkList; //建立連結串列 int CreateList(Li

請編寫一個函式使其可以刪除某個連結串列給定的(非末尾)節點你將被給定要求被刪除節點

今天給大家分享一個小題目,如下: 請編寫一個函式,使其可以刪除某個連結串列中給定的(非末尾)節點,你將只被給定要求被刪除的節點。 現有一個連結串列 -- head = [4,5,1,9],它可以表示為: 4 -> 5 -> 1 -> 9

求兩個元素遞增排列的連結串列的交集並將其存放在某個連結串列

#include "stdafx.h" #include<stdio.h> #include<malloc.h> #include<stdlib.h> typed

237. Delete Node in a Linked List 刪除連結串列某個節點

題目       程式碼部分(0ms 100%) class Solution { public void deleteNode(ListNode node) { node.val = node.next.va

C++單向連結串列相關知識

struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; 其中,  ListNode(int x) : val(x), nex

13、輸入一個單向連結串列輸出連結串列倒數第k個結點

#include <stdio.h> #include <stdlib.h> typedef struct node { int value; struct node *next; }LinkList; void CreateList(LinkList *L); //建立一個連

11. 微軟面試題:輸入一個單向連結串列輸出連結串列倒數第k個結點連結串列的倒數第0個結點為連結串列指標

題目:輸入一個單向連結串列,輸出該連結串列中倒數第k個結點。連結串列的倒數第0個結點為連結串列的尾指標。 分析: 單鏈表只能向後遍歷,不能向前遍歷,尾指標好找,倒數第K個不能從尾指標向前找。 倒的不好找,正的好找,我們只需要知道連結串列的總長度,就可以知道正數第幾個節點(