首页 > 其他分享 >双向循环链表应用

双向循环链表应用

时间:2022-12-23 21:00:25浏览次数:37  
标签:head int elem next 链表 prior 循环 双向 DuLNode

已知p指向双向循环链表中的一个结点,其结点结构为data、prior、next三个域,实现交换p所指向的结点和它的前缀结点的顺序。

输入格式:

第一行输入元素个数,第二行输入元素值,第三行输入要交换的元素值,第四行输出结果。

输出格式:

输出交换后的结果,中间不用空格分隔,若要交换的值:4,不在数组终,则输出“未找到4”

 代码如下
#include<iostream>
#define ElemType int
using namespace std;

typedef struct DuLNode
{
    ElemType elem;
    struct DuLNode* prior;
    struct DuLNode* next;
}DuLNode,*DuLinkList;

DuLinkList input(DuLinkList& head, int x)
{
    head = new DuLNode;
    head->next = NULL;
    head->prior = NULL;
    head->elem = x;
    DuLNode* p, * q;
    p = head;
    for (int i = 0; i < x; i++)
    {
        q = new DuLNode;
        q->next = NULL;
        q->prior = p;
        p->next = q;
        cin >> q->elem;
        p = q;
    }
    return head;
}

DuLNode* getelem(DuLinkList L, int e)
{
    DuLNode* p;
    p = L->next;
    while (p && p->elem != e)
        p = p->next;
    return p;
}

void output(DuLinkList& head, int y)
{
    DuLNode* q;
    DuLNode* z = getelem(head, y);
    q = head->next;
    if (z == NULL)
    {
        cout << "未找到" << y;
        return;
    }
    while (q && q != NULL)
    {
        if (q != z->prior && q != z)
            cout << q->elem;
        else if (q == z->prior)
            cout << q->next->elem;
        else if (q == z)
            cout << q->prior->elem;
        q = q->next;
    }
}
int main()
{
    int a, b;
    DuLinkList head;
    cin >> a;
    head = input(head, a);
    cin >> b;
    output(head, b);
    return 0;
}

 

标签:head,int,elem,next,链表,prior,循环,双向,DuLNode
From: https://www.cnblogs.com/psh888/p/17001623.html

相关文章

  • for循环
      代码示例:寻找最小公倍数<!DOCTYPEhtml><html><head><metacharset="utf-8"><title></title></head><body><script>......
  • python:while循环
      1.while的条件需得到布尔类型,True表示继续循环,False表示结束循环2.需要设置循环终止的条件,如i+=1配合i<100,就能确保100次后停止,否则将无限循环3.空格缩进......
  • [数据结构]单向链表及其基本操作(C语言)
    单向链表什么是单向链表链表是一种物理储存单元上非连续、非顺序的储存结构。它由一系列结点(链表中每一个元素称为结点)组成,结点可动态生成。每个结点包括两个部分:一个是......
  • switch多选择结构、循环结构
    switch多选择结构多选择结构还有一个实现方式就是switchcase语句switchcase语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。switch语句中的变......
  • 单链表实现小商品信息管理系统
    单链表实现小商品信息管理系统设计一个小商品信息管理系统。根据以下功能,分析使用的逻辑结构和存储结构。(1)增加功能:能录入新数据(包括:商品名称、商品编号、厂家、库存量,......
  • 我要在for循环List中删除元素
    一起养成写作习惯!这是我参与「掘金日新计划·4月更文挑战」的第2天,点击查看活动详情。for循环可以删除集合元素吗,往往我们得到的答案有时候就是不可以,安全起见,要迭代器......
  • while循环、break、格式化、运算符、编码初始
    1、while循环:不断的重复着某件事就是循环2、while循环图解:3、break:终止当前循环。4、continue就是跳出本次循环、继续下次循环。下方代码都不会执行。......
  • #yyds干货盘点# LeetCode程序员面试金典:特定深度节点链表
    题目:给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为D,则会创建出D个链表)。返回一个包含所有深度的链表的数组。 示例:输入:[1,2,3,4,5,......
  • switch多选择结构、循环结构
    switch多选择结构多选择结构还有一个实现方式就是switchcase语句switchcase语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。switch语句中的变......
  • 从源码层面深度剖析Spring循环依赖
    作者:郭艳红以下举例皆针对单例模式讨论图解参考https://www.processon.com/view/link/60e3b0ae0e3e74200e2478ce1、Spring如何创建Bean?对于单例Bean来说,在Spring容器......