数据结构-链表实现删除全部特定元素x

链表节点类定义:

 1 template <class T>
 2 class SingleList;
 3 template <class T>
 4 class Node
 5 {
 6 private:
 7     T element;
 8     Node<T> *link;
 9     friend class SingleList<T>;
10 };

链表类定义:

 1 template <class T>
 2 class SingleList :public LinearList<T>
 3 {
 4 public:
 5     SingleList()
 6     {
 7         first = NULL;
 8         n = 0;
 9     }
10     ~SingleList();
11     bool SM_Delete(T x);
12 private:
13     Node<T>* first;
14 };

删除特定元素X的成员函数:

方法一:

 1 template<class T>
 2 bool  SingleList<T>::SM_Delete(T x)
 3 {
 4     Node<T> *p;
 5     int j = 0;
 6     p = first;
 7     while (p)
 8     {
 9         for (j = 0; p&&p->element != x; j++)
10             p = p->link;
11         if (p)
12         {
13             Delete(j);
14             p = first;
15         }
16         else
17             return false;
18     }
19     return true;
20 }

方法二:

 1 template<class T>
 2 bool  SingleList<T>::SM_Delete(T x)
 3 {
 4     for (Node<T>** cur = &first; *cur;)
 5     {
 6         Node<T>* entry = *cur;
 7         if (entryement == x)
 8         {
 9             *cur = entry->link;
10             free(entry);
11         }
12         else
13             cur = &entry->link;
14     }
15 }
时间: 2024-10-18 23:14:42

数据结构-链表实现删除全部特定元素x的相关文章

数据结构顺序表删除所有特定元素x

顺序表类定义: 1 template<class T> 2 class SeqList : 3 { 4 public: 5 SeqList(int mSize); 6 ~SeqList() 7 { 8 delete[] elements; 9 } 10 bool SM_Delete(T x); 11 private: 12 int maxLength; 13 T *elements; 14 }; 15 template <class T> 16 SeqList<T>::

从单链表中删除最大的元素,单链表元素排序

public class LinkList { public Node head; public LinkList() { head = new Node(); head.next = null; } //尾插法 public void createByTail(int[] arr, int n) { Node tail = head; for(int i=0; i<n; i++) { Node c = new Node(arr[i]); tail.next = c; tail = c; } t

关于点击后元素删除,特定元素改变

点击发货之后,发货按钮隐藏,并且对应栏目的订单状态,未发货变成已发货: ajax: 1 <script type="text/javascript"> 2 3 function set_is_send(id,e){ 4 $.ajax({ 5 url:"{:U('User/set_is_send')}", 6 type:"POST", 7 data:{'id':id}, 8 dataType:"JSON", 9 su

【LeetCode-面试算法经典-Java实现】【083-Remove Duplicates from Sorted List(排序的单链表中删除重复的结点)】

[083-Remove Duplicates from Sorted List(排序的单链表中删除重复的结点)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Given a sorted linked list, delete all duplicates such that each element appear only once. For example, Given 1->1->2, return 1->2. Given 1->1->2

javascript中的链表结构—从链表中删除元素

1.概念 上一个博文我们讲到链表,其中有一个方法remove()是暂时注释的,这个方法有点复杂,需要添加一个Previous()方法找到要删除的元素的前一个节点,这一个博文我们来分析一下这个remove()方法. 从链表中删除节点的时候,需要先找到这个待删除节点的前面的节点.找到这个节点之后修改它的next属性,使其指向待删除节点的下一个节点,这样就把待删除节点给删除了,是不是很简单呢?但是问题来了,我们是不是要找到待删除节点的前面一个节点呢?这样就需要添加一个findPrevious()方法来

【LeetCode-面试算法经典-Java实现】【082-Remove Duplicates from Sorted List II(排序链表中删除重复元素II)】

[082-Remove Duplicates from Sorted List II(排序链表中删除重复元素II)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list. For example, Given 1->2->

生成单向链表 并删除链表中某个元素

leetcode 题目描述: Remove all elements from a linked list of integers that have value val. Example Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6 Return: 1 --> 2 --> 3 --> 4 --> 5 生成链表 若输入元素不为0,则加入到链表尾部,若为0,不加入,且生成链表工作完成.代

删除list中的特定元素

对于动态删除list中的特定元素,一般用linkedList,删除时有以下两种方法. 1. 循环遍历,找到要删除的元素后删除并且减少list长度.如果不减少list长度,那么就仅仅删除了元素,但没改变循环的判定条件(list.size),就会出现数组越界. for(int i = 0, len = list.size(); i < len; i++){ if(list.get(i) == 1){ list.remove(i); len--; i--; } } 2. List接口内部实现了Iter

【LeetCode链表】删除排序链表中的重复元素 II

题目描述 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字. 示例: 输入: 1->2->3->3->4->4->5 输出: 1->2->5 题目链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/ 做这题之前,可以先做删除排序链表中的重复元素,题解. 思路 这题是<剑指Offer>上的一道题.我们需要保存3个指针: