双向循环链表
2023-09-27 14:26:25 时间
输入共有三行,第一行为该单向循环链表的长度 n(1≤n≤60);第二行为该单向循环链表的各个元素 ,它们各不相同且都为数字;第三行为一个数字 m,表示链表中的一个元素值,要求输出时以该元素为起点反向输出整个双向链表。
输出格式
输出为一行,即完成双向链表后以反向顺序输出该链表,每两个整数之间一个空格,最后一个整数后面没有空格。
#include <stdio.h>
typedef struct Node{
int data;
struct Node *prior, *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 out_put(LinkedList head, int n,int element) {
Node *current_node = head;
while (current_node->data != element) {
current_node = current_node->prior;
}
while (n--) {
if (current_node->data != element) printf(" ");
printf("%d",current_node->data);
current_node = current_node->prior;
}
}
void main() {
int n,m;
scanf("%d", &n);
LinkedList *linkedlist = NULL;
for (int i = 0; i < n; i++) {
Node *node = (LinkedList *)malloc(sizeof(LinkedList));
node->next = NULL;
node->prior = NULL;
scanf("%d", &node->data);
linkedlist = insert(linkedlist,node, i);
}
scanf("%d", &m);
out_put(linkedlist,n, m);
return 0;
}
相关文章
- C/C++数据结构(三) —— 双向带头循环链表
- 双向循环链表:鸿蒙轻内核中数据的“驿站”
- java基础(2)循环语句for、while、do...while
- 【数据结构】链表最强结构-带头双向循环链表(超详解)
- Golang基础(2):Go条件语句、switch和循环语句
- 【禅与计算机程序设计艺术】使用 16 门编程语言实现斐波那契数列:循环控制指令与函数递归思想
- 【人工智能】深度学习算法的底层理论与具体应用场景 || 神经网络、卷积神经网络、循环神经网络、图神经网络、长短期记忆神经网络、自编码器、生成对抗网络
- 【数据结构】双向循环带头链表-增-删-查(C语言)
- iOS - 循环引用
- java-基础-foreach与正常for循环效率对比
- 循环控制及状态返回值 break、continue、exit、retrurn
- 【数据结构】单向链表,单向循环链表,双向循环链表
- 2022年最新Python大数据之Python基础【三】循环
- C语言--循环结构
- 深入学习 ES6 的迭代器 和 for-of 循环
- [数据结构 - 第3章] 线性表之循环链表(C语言实现)
- python实现单向循环链表
- 【链表】双向循环链表的实现