首页 > 其他分享 >数据结构实验2

数据结构实验2

时间:2025-01-10 16:56:41浏览次数:1  
标签:Node head int next current prior 实验 数据结构

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

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

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

输入样例:
在这里给出一组输入。例如:

6
1 2 3 4 5 6
6
输出样例:
在这里给出相应的输出。例如:

123465、

代码:
`

include<stdio.h>

include<stdlib.h>

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

Node* createList(int n,int values[]){
Node head=NULL,tail=NULL,newNode;
for(int i=0;i<n;i++){
newNode=(Node
)malloc(sizeof(Node));
newNode->data=values[i];
newNode->prior=tail;
newNode->next=head;
if(tail){
tail->next=newNode;
}else{
head=newNode;
}
if(head){
head->prior=newNode;
}
tail=newNode;
}
return head;
}

Node*findNode(Node *head,int value){
Node *current=head;
if(current){
do{
if(current->data==value){
return current;
}
current=current->next;
}while(current!=head);
}
return NULL;
}

void swapNodes(Node *p){
if(pNULL||p->priorNULL)return ;

Node *prev=p->prior;
Node *next=p->next;

if(prev->prior){
    prev->prior->next=p;
}
if(next){
    next->prior=prev;
}
prev->next=next;
p->prior=prev->prior;
p->next=prev;
prev->prior=p;

if(p->prior==NULL){
    p->prior=prev;
}

}

void printList(Node head){
Node
current=head;
if(current){
do{
printf("%d",current->data);
current=current->next;
}while(current!=head);
}
printf("\n");
}

int main(){
int n,value,swapValue;
scanf("%d",&n);

int values[n];
for(int i=0;i<n;i++){
    scanf("%d",&values[i]);
}

scanf("%d",&swapValue);

Node *head=createList(n,values);
Node *p=findNode(head,swapValue);

if(p){
    swapNodes(p);
    printList(head);
}else{
    printf("未找到%d\n",swapValue);
}

return 0;

}
`

标签:Node,head,int,next,current,prior,实验,数据结构
From: https://www.cnblogs.com/LiuHuWei/p/18664247

相关文章

  • 数据结构实验三
    石家庄铁道大学实验报告课程名称:信2305-3 任课教师:刘丹 实验日期:2024.12.15班级:信2305-3 姓名:徐戌 学号:20234316实验项目名称:实验三一、 实验目的1.掌握二叉树的定......
  • 数据结构实验五
    石家庄铁道大学实验报告课程名称:数据结构与算法设计 任课教师:刘丹 实验日期:2024.12.15班级:信2305-3 姓名:徐戌 学号:20234316实验项目名称:实验五一、 实验目的1.掌握散列表......
  • 数据结构实验3
    7-3修改数组(蓝桥杯)给定一个长度为N的数组A=[A1,A2,⋅⋅⋅AN],数组中有可能有重复出现的整数。现在小明要按以下方法将其修改为没有重复整数的数组。小明会依次修改A2,A3,⋅⋅⋅,AN。当修改Ai时,小明会检查Ai是否在A1∼Ai−1中出现过。如果出现过,则小明会给Ai加上......
  • 数据结构实验四
    石家庄铁道大学实验报告课程名称:信2305-3 任课教师:刘丹 实验日期:2024.12.15班级:信2305-3 姓名:徐戌 学号:20234316实验项目名称:实验四一、 实验目的1)掌握图的邻接矩......
  • 数据结构实验4
    7-2栈实现表达式求值使用键盘输入数学表达式(含数字,四种运算符+、-、、/和小括号,其中运算数都是一位数(0~9)),将数学表达式转化成后缀表达式输出,利用后缀表达式求表达式的值并输出。输入格式:输入正确的表达式(可以有空格)后回车,得到后缀表达式和结果。输入括号缺失的表达式,输出"ERR......
  • 数据结构实验六
    石家庄铁道大学实验报告课程名称:数据结构与算法设计 任课教师:刘丹 实验日期:2024.12.15班级:信2305-3 姓名:徐戌 学号:20234316实验项目名称:实验六一、 实验目的1.掌握插入排......
  • 【西南科技大学计算机学院、智能计算与系统结构实验室主办 | ACM独立出版 | 往届均已
    ACM独立出版|往届均已成功检索,最快刊后1个月内实现EI检索征稿主题范围广:计算机网络安全、软件工程、信号处理、程序分析等领域主办单位:西南科技大学计算机学院、智能计算与系统结构实验室第五届计算机网络安全与软件工程国际学术会议(CNSSE2025)20255thInternational......
  • 数据结构(红黑树)
    问题的起源学习一个知识模块,一般先要厘清学习的目的,一个技术分支的出现必然是应对某个具体问题而产生的解决方案,搞清楚了问题的起源,对解决问题的思路就有了根本性的理解,来龙去脉把握清楚了学习起来就既有动力又有目标了。回归到红黑树的问题,红黑树其实也是一种平衡树,之前......
  • JSP开放实验室预约管理系统2118f--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义随着教育和科研的不断发展,实验室资源的有效管理和开放共享成为重要议题。传统的人工管理方式存在效率低、资源浪费等问题,无法满......
  • 数据结构全书简答题汇总(期末、考研)三万多字
    第一章:绪论-灰灰考研汇总1.数据:数据是信息的载体,是描述客观事物属性的数、字符以及所有能输入到计算机中并 被计算机程序处理的符号的集合。2.数据元素:数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。3.数据项:数据项是数据结构中讨论的最小单位。 是数据......