前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >双向循环链表

双向循环链表

作者头像
小飞侠xp
发布2021-05-10 10:29:53
5600
发布2021-05-10 10:29:53
举报

输入共有三行,第一行为该单向循环链表的长度 n(1≤n≤60);第二行为该单向循环链表的各个元素 ,它们各不相同且都为数字;第三行为一个数字 m,表示链表中的一个元素值,要求输出时以该元素为起点反向输出整个双向链表。

输出格式 输出为一行,即完成双向链表后以反向顺序输出该链表,每两个整数之间一个空格,最后一个整数后面没有空格

代码语言:javascript
复制
#include<stdio.h>
#include<stdlib.h>

typedef struct Node{
    int data;
    struct Node *prior;
    struct Node *next;
}Node, *LinkedList;

LinkedList insert(LinkedList head, Node *node, int index){
    if(head == NULL){
        if(index != 0){
            return head;
        }
        head = node;
        head->prior = head;
        head->next = head;
        return head;
    }
    if(index == 0){
        node->next = head;
        node->prior = head->prior;
        head->prior->next = node;
        head->prior = node;
        head = node;
        return head;
    }
    Node *current_node = head;
    int count = 0;
    while(current_node->next != head && count < index -1){
        current_node = current_node->next;
        count++;
    }
    if(count == index - 1){
        node->next = current_node->next;
        node->prior = current_node;
        current_node->next->prior = node;
        current_node->next = node;  
    }
    return head;
}

void output(LinkedList head, int val, int num){
    Node *current_node = head;
    int count = num;
    while(current_node->data != val){
        current_node = current_node->next;   
    }
    while(count--){
        printf("%d",current_node->data);
        current_node = current_node->prior;
        if(count != 0){
            printf(" ");
        }
    }
}

int main(){
    int n;
    scanf("%d\n",&n);
    LinkedList *linkedlist = NULL;
    for(int i = 0; i < n; i++){
        Node *node =(Node *)malloc(sizeof(Node));
        scanf("%d ",&node->data);
        node->next = NULL;
        node->prior = NULL; 
        linkedlist = insert(linkedlist, node, i);
    }
    int m;
    scanf("%d\n",&m);
    output(linkedlist, m, n);
    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档