6-8 單連結串列結點刪除 (20 分)
6-8 單連結串列結點刪除 (20 分)
本題要求實現兩個函式,分別將讀入的資料儲存為單連結串列、將連結串列中所有儲存了某給定值的結點刪除。連結串列結點定義如下:
struct ListNode {
int data;
ListNode *next;
};
函式介面定義:
struct ListNode *readlist();
struct ListNode *deletem( struct ListNode *L, int m );
函式readlist
從標準輸入讀入一系列正整數,按照讀入順序建立單連結串列。當讀到−1時表示輸入結束,函式應返回指向單連結串列頭結點的指標。
函式deletem
將單連結串列L
中所有儲存了m
的結點刪除。返回指向結果連結串列頭結點的指標。
裁判測試程式樣例:
#include <stdio.h>
#include <stdlib.h>
struct ListNode {
int data;
struct ListNode *next;
};
struct ListNode *readlist();
struct ListNode *deletem( struct ListNode *L, int m );
void printlist( struct ListNode *L )
{
struct ListNode *p = L;
while (p) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main()
{
int m;
struct ListNode *L = readlist();
scanf("%d", &m);
L = deletem(L, m);
printlist(L);
return 0;
}
/* 你的程式碼將被嵌在這裡 */
輸入樣例:
10 11 10 12 10 -1
10
輸出樣例:
11 12
struct ListNode *readlist()
{
struct ListNode *head, *p, *q;
head = (struct ListNode*)malloc(sizeof(struct ListNode));
head->next = NULL;
p = head;
while (1)
{
q = (struct ListNode*)malloc(sizeof(struct ListNode));
scanf("%d", &q->data);
if (q->data == -1)
break;
p->next = q;
p = q;
}
p->next = NULL;
return head;
}
struct ListNode *deletem(struct ListNode *L, int m)
{
struct ListNode *head, *p, *q;
head = L, p = L->next, q = L;
while (p)
{
if (p->data == m)
{
head->next = p->next;
free(p);
p = head->next;
continue;
}
head = head->next;
p = p->next;
}
return q->next;
}
相關文章
- 【連結串列問題】刪除單連結串列的中間節點
- 【連結串列問題】打卡3:刪除單連結串列的中間節點
- 單向迴圈連結串列——查詢、刪除、插入結點
- 【連結串列問題】打卡2:刪除單連結串列的第 K個節點
- 連結串列基礎2(超簡單)--單連結串列的插入和刪除
- 雙向連結串列————查詢、刪除、插入結點
- leetcode----刪除連結串列中的節點LeetCode
- 6-7 奇數值結點連結串列 (20 分)
- JZ-056-刪除連結串列中重複的結點
- 資料結構之單連結串列的建立與刪除資料結構
- 資料結構實驗之連結串列七:單連結串列中重複元素的刪除資料結構
- 牛客(刪除連結串列中重複節點)
- 19. 刪除連結串列的倒數第 N 個結點
- 13. O(1)時間刪除連結串列節點
- Java兩種方式實現連結串列的刪除,返回頭結點Java
- 資料結構:單迴圈連結串列的建立插入與刪除資料結構
- 連結串列 - 單向連結串列
- 結點插入到單連結串列中
- JZ76 刪除連結串列中重複的節點
- 0011 刪除連結串列的倒數第N個節點
- C\C++之用結構體實現連結串列的建立、遍歷、結點插入、結點刪除C++結構體
- 55-將單連結串列原地逆置(有頭結點的單連結串列)
- 連結串列-單連結串列實現
- 2024/11/27 【連結串列】LeetCode 24 兩兩交換連結串列中的節點 & LeetCode 19 刪除連結串列的倒數第N個節點LeetCode
- Day4(連結串列)|24. 兩兩交換連結串列中的節點 & 19.刪除連結串列的倒數第N個節點 & 面試題 02.07. 連結串列相交 &142.環形連結串列II面試題
- LeetCode每日一題:刪除連結串列中的節點(No.237)LeetCode每日一題
- 刪除連結串列中等於給定值 val 的所有節點。
- 劍指offer-----刪除連結串列中的重複節點
- 資料結構-單連結串列、雙連結串列資料結構
- 【小白學演算法】6.單連結串列的修改、刪除演算法
- **24. 兩兩交換連結串列中的節點****19.刪除連結串列的倒數第N個節點****面試題 02.07. 連結串列相交****142.環形連結串列II**面試題
- 單連結串列
- leetcode每日一題—19.刪除連結串列的倒數第N個結點LeetCode每日一題
- 單連結串列實現增刪改查
- 資料結構_連結串列_單向迴圈連結串列 & 雙向連結串列的初始化、插入、刪除、修改、查詢列印(基於C語言實現)資料結構C語言
- LeetCode- 19 刪除連結串列的倒數第N個節點LeetCode
- 題19. 刪除連結串列的倒數第N個節點
- JZ-069-在 O(1) 時間內刪除連結串列節點