單鏈表 演算法(刪除中間節點)
單鏈表的演算法:
假設有一個沒有頭指標的單鏈表,一個指標指向此單鏈表中間的一個節點
(不是第一個,也不是最後一個),如何將該節點從單鏈表中刪除。
void DeleteRandomNode(LinkList& pCurrent)
{
//Cant Delete the Last One.
assert (pCurrent!=NULL);
LinkList pNext=pCurrent->Next;
if(pNext!=NULL)
{
pCurrent->Next=pNext->Next;
pCurrent->data=pNext->data;
delete pNext;
}
}
int main()
{
LinkList head=(LinkList)malloc(sizeof(Node));
head->Next=NULL;
head=InitLinkList(9,head);
TraverseLinkList(head);
DeleteRandomNode(head->Next->Next);
TraverseLinkList(head);
return 0;
}
相關推薦
單鏈表 演算法(刪除中間節點)
單鏈表的演算法: 假設有一個沒有頭指標的單鏈表,一個指標指向此單鏈表中間的一個節點 (不是第一個,也不是最後一個),如何將該節點從單鏈表中刪除。 void DeleteRandomNode(LinkList& pCurrent) { //Cant Delete
從無頭單鏈表中刪除節點
刪除無頭單鏈表: 程式實現很簡單,主要是思路如果打不開的話,就無從下手。 如果是帶有頭節點的連結串列,直接從頭部遍歷,找到需要刪除的節點,然後直接刪除 刪除的方式,加入目前的節點為node ,前一個節點即為pre pre->next = node->next;
題目 10 帶頭節點的單鏈表,刪除所有值為X的節點,並釋放空間
帶頭節點的單鏈表,刪除所有值為X的節點,並釋放空間 void del_allX(Node*& n, int value){ Node *pre = n, *p = n->next,*q; while(p!=NULL){ if(p->num==valu
單鏈表的建立,節點的插入,刪除,遍歷(未完善版)
#include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR 0 typedef int ElemType; typedef int Status; typedef struct Lin
刪除單鏈表中的重複節點(刪除多餘項)
題目:如何刪除單鏈表中的重複節點(即保證每個元素只出現一次,刪除多餘的,且後來出現的元素)。 一個沒有排序的單鏈表,如 list = {a, 1, x, b, e, f, f, e, a, g, h, b, m},請去掉重複項,並保留原順序,以上鍊表去掉重複項
單鏈表的刪除演算法時間複雜度O(1)和O(n)
平時我們在計算單鏈表的第i個節點刪除時間複雜度時一般認為是O(n),過程如下 1.先從頭節點開始遍歷連結串列,找到第i-1個節點 2.將第i-1節點next指向第i個節點的next 可以看到時間主要花在了遍歷連結串列上 如果我們已經拿到了要刪除的第i個節點Node(i),
在單鏈表中刪除倒數第k個節點(java實現)
實現方式很多,在這裡只說兩種實現方式。看不懂時候,大家可以畫畫圖,對理解為什麼很有幫助。 第一種方式: 1.首先判斷K值和連結串列是否為空,如果k<=0,或連結串列為空,直接返回head; 2.滿足上面條件後,定義ListNode P=head,重頭
在單鏈表中刪除倒數第K個節點 Python 版
題目: 給定一個連結串列,刪除其中倒數第k個結點。 程式碼: class LinkedListAlgorithms(object): def __init__(self): pass def rm_last_kth_nod
【LeetCode-面試演算法經典-Java實現】【083-Remove Duplicates from Sorted List(排序的單鏈表中刪除重複的結點)】
原題 Given a sorted linked list, delete all duplicates such that each element appear only on
帶頭節點單鏈表的刪除(元素) 操作(C語言完整版)
#include <stdio.h>#include <malloc.h>#define N 5typedef struct node{char name[20];float score;struct node *next;}stud;stud *cr
用O(1)的時間複雜度刪除單鏈表中的某個節點
給定連結串列的頭指標和一個結點指標,在O(1)時間刪除該結點。連結串列結點的定義如下: /** * Definition for singly-linked list. * public class ListNode { * int val;
在單鏈表中刪除值相同的多餘結點的演算法。
#include<stdio.h> #include<stdlib.h> typedef struct node{ int data; struct node *next; } LinkList; LinkList* initialList(LinkList
單鏈表的刪除
style cnblogs fun 如果 else 頭節點 var next let 單鏈表的刪除,就是找到鏈表節點的前面一個節點,將其與待刪節點的下一個節點連接,待刪節點斷鏈 function remove(head,val){ var pre = head;
資料結構之單鏈表插入刪除操作
#include<iostream> using namespace std; typedef struct LNode { int data; struct LNode *next; }LNode; void createListR(LNode *C, int a[], int n
單鏈表實現查詢中間結點
題目: 使用者輸入x; 隨機生成X個元素,輸出中間元素。 若為奇數則輸出中間,若為偶數輸出中間兩個數的平均值 連結串列實現 具體實現演算法: (1)定義兩個指標,首先將他們指向第一個元素 (2)快慢指標,快指標p1是慢指標p2的2倍速度。相當於p1+2,p2++;
迴圈單鏈表區間刪除(函式)
6-1 迴圈單鏈表區間刪除(15 分) 本題要求實現帶頭結點的迴圈單鏈表的建立和單鏈表的區間刪除。L是一個帶頭結點的迴圈單鏈表,函式ListCreate_CL用於建立一個迴圈單鏈表,函式ListDel
迴圈單鏈表區間刪除
本題要求實現帶頭結點的迴圈單鏈表的建立和單鏈表的區間刪除。L是一個帶頭結點的迴圈單鏈表,函式ListCreate_CL用於建立一個迴圈單鏈表,函式ListDelete_CL用於刪除取值大於min小於ma
資料結構C++之單鏈表插入刪除操作
#include<iostream> using namespace std; typedef struct LNode { int data; struct LNode *next; }LNode; void createListR(LNode *C, in
PTA 6-1 迴圈單鏈表區間刪除(15 分)
本題要求實現帶頭結點的迴圈單鏈表的建立和單鏈表的區間刪除。L是一個帶頭結點的迴圈單鏈表,函式ListCreate_CL用於建立一個迴圈單鏈表,函式ListDelete_CL用於刪除取值大於min小於max的連結串列元素。 函式介面定義: Status ListCreate_
6-1 迴圈單鏈表區間刪除(15 分)PTA
//庫函式標頭檔案包含 #include<stdio.h> #include<malloc.h> #include<stdlib.h> //函式狀態碼定義 #define TRUE 1 #define FALSE