数据结构实验之链表九:双向链表
程序员文章站
2022-05-06 22:13:54
...
#include <stdio.h>
#include <stdlib.h>
#include<malloc.h>
struct node
{
int data;
struct node *next;
struct node *before;//和单向的不同就是多了一个before指针,指向前面的元素
};
struct node *h,*p,*t;
int main()
{
int n,m;
h=(struct node *)malloc(sizeof(struct node));
h->next=NULL;
t=h;
scanf("%d%d",&n,&m);
while(n--)
{
p=(struct node *)malloc(sizeof(struct node));
scanf("%d",&p->data);
p->next=NULL;
t->next=p;
p->before=t;
t=p;
}
p=h->next;
int a;
while(m--)
{
scanf("%d",&a);
p=h->next;
while(p->data!=a)
{
p=p->next;
}//找到题目要求元素的位置
if(p->before!=h&&p->next!=NULL)
printf("%d %d\n",p->before->data,p->next->data);
else if(p->before==h)
printf("%d\n",p->next->data);
else if(p->next==NULL)
printf("%d\n",p->before->data);//按要求输出前驱,后继
}
return 0;
}
上一篇: 线性表(双向链表(动图解析))
下一篇: 使用connect by进行级联查询