关闭

2.2删除带头结点的L中所有值为x的结点

318人阅读 评论(0) 收藏 举报
方法1:

/* 用于数据结构第二章线性表的综合应用题*/
//设计一个递归算法,删除带头结点的L中所有值为x的结点

#include <iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
//2.1
typedef struct LNode
{
    int data;
    struct LNode *next;
} LNode,*LinkList;

int main()
{
    return 0;
}

void Del_X_1(LinkList &L,int x)
{
    LNode *p=L->next,*pre=L,*q;
    while(p->next!=NULL)
    {
        if(p->data==x)
        {
            q=p;  //q指向该结点
            p=p->next;
            pre->next=p; //删除*q结点
            free(q);
        }
        else
        {
            pre=p;
            p=p->next;
        }
    }
}

方法2

#include <iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
/* 用于数据结构第二章线性表的综合应用题*/
//,删除带头结点的L中所有值为x的结点
//2.2方法2

typedef struct LNode
{
    int data;
    struct LNode *next;
} LNode,*LinkList;

int main()
{
    return 0;
}
void Del_X_2(LinkList &L,int x)
{
    LNode *p=L->next,*r=L,*q;//r指向尾结点,其初值为头结点
    while(p!=NULL)
    {
        if(p->data!=x)//*p结点不为x时将其链接到L尾部
        {
            r->next=p;
            r=p;
            p=p->next;
        }
        else
        {
            q=p;
            p=p->next;//继续扫描
            free(p);//释放空间
        }
    }
    r->next=NULL;   //插入结束后,尾结点指针为NULL
}

 

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

删除单链表中所有值为x的元素

删除所有值为x的单链表中的元素 首先,我们先考虑第一种情况,就是说值删除第一个值为x的元素,这个比较简单, 只需要挨个比较x和链表节点的值,找到值相同的节点的前一个就可以删除这个节点了。 然后我们可...
  • qq_31964815
  • qq_31964815
  • 2016-04-06 22:19
  • 2464

第1章第2节练习题3 删除最小值结点

试编写在带头结点的单链表L中删除一个最小值结点的高效算法(假设最小值结点是唯一的)
  • u013595419
  • u013595419
  • 2016-01-11 14:12
  • 1930

递归实现删除链表中值为x的元素

在数据结构递归这一章中,有一个通过递归来实现删除单链表中一个值为x的节点的函数,大体上就像这样 void del(LinkList *&L,ElemType x) { Node *t; if...
  • wr132
  • wr132
  • 2015-04-28 19:30
  • 1740

设计一个递归算法,删除不带头结点的单链表L中所有值为x的结点

代码如下: void Del_X_3(LinkList &L,ElemType x) { LNode *p; if(L==NULL) return ; if(L->data==x) ...
  • xuluhui123
  • xuluhui123
  • 2013-10-28 22:56
  • 4065

设以带头结点的双向循环链表表示的线性表L=(a1,a2,……,an)。

我的思路是拆开链表,然后先插入奇数位的,再插入偶数位的,要注意链表个数有奇数和偶数两种情况。 我不善于解释,注释都写在代码旁了,function函数就是题目要求的算法,其他函数是用来帮忙构建题目说的...
  • weixin_41133154
  • weixin_41133154
  • 2017-12-17 11:47
  • 31

设计一代码,逆置带头结点的动态单链表L

有两种方法: 一是:用头插法建立单链表,自然而然就实现了逆置的动态链表。 代码: #include #include typedef int datatype; typedef stru...
  • u010229420
  • u010229420
  • 2013-04-16 09:24
  • 1103

数据结构与算法分析笔记与总结(java实现)--链表14:删除链表中所有指定值结点问题

数据结构与算法分析笔记与总结(java实现)--链表14:删除链表中所有指定值结点问题
  • qq_27703417
  • qq_27703417
  • 2017-01-17 21:36
  • 298

设以带头结点的双向循环链表表示的线性表L= (a1,a2,…,an),试写一时间复杂度O(n)的算法,将L改造为 (a1,a3,…,an,…,a4,a2)。

/* 将L中的元素,按如下规则插入新表,并返回新表。 (1,2)->(1,3,2)->(1,3,4,2)->(1,3,5,4,2)->(1,3,5,6,4,2)->... */ DuLinkList ...
  • TysonSir
  • TysonSir
  • 2017-03-27 23:05
  • 1094

带头结点的单循环链表,删除所有值大于min,小于max的结点的算法

  • 2016-04-12 22:08
  • 30KB
  • 下载

数据结构-基本算法-不带头结点的循环链表

  • 2017-05-21 18:51
  • 1KB
  • 下载
    个人资料
    • 访问:57997次
    • 积分:1229
    • 等级:
    • 排名:千里之外
    • 原创:149篇
    • 转载:8篇
    • 译文:0篇
    • 评论:4条
    最新评论