数据结构实验之链表九:双向链表
来源:互联网 发布:java中排序算法 编辑:程序博客网 时间:2024/05/17 22:32
这道题的算法思想就是给结点再加一个前驱指针,使它指向它的前面的结点,注意创建双向链表时要把head结点的前驱指针置空。
代码如下:
#include <stdio.h>
#include <malloc.h>
struct node{/*双向链表的定义*/
int data;
struct node* prior,*next;/*加上一个前驱指针*/
};
struct node* Createlist(int n){/*创建双向链表*/
struct node* head,*tail,*p;
head=(struct node*)malloc(sizeof(struct node));
head->next=NULL;
head->prior=NULL;/*把头结点的前驱指针置空*/
tail=head;
int i,d;
for(i=1;i<=n;i++){
scanf("%d",&d);
p=(struct node*)malloc(sizeof(struct node));
p->data=d;
p->next=NULL;
p->prior=tail;
tail->next=p;
tail=p;
}
return head;
};
int main(){
int m,n,i,d;
scanf("%d %d",&n,&m);
struct node* head,*p;
head=Createlist(n);
for (i=1;i<=m;i++){
scanf("%d",&d);
for(p=head->next;p!=NULL;p=p->next){
if(d==p->data){
if(p->prior!=NULL&&p->next!=NULL&&p->prior!=head){
if (i==m)
printf("%d %d",p->prior->data,p->next->data);
else
printf("%d %d\n",p->prior->data,p->next->data);
}
else if(p->next==NULL){
if(i==m)
printf("%d",p->prior->data);
else
printf("%d\n",p->prior->data);
}
else if(p->prior==head){
if(i==m)
printf("%d",p->next->data);
else
printf("%d\n",p->next->data);
}
}
}
}
return 0;
}
- 数据结构实验之链表九:双向链表
- 数据结构实验之链表九:双向链表
- 数据结构实验之链表九:双向链表
- 数据结构实验之链表九:双向链表
- 数据结构实验之链表九:双向链表
- 数据结构实验之链表九:双向链表
- 数据结构实验之链表九:双向链表
- 数据结构实验之链表九:双向链表
- 数据结构实验之链表九:双向链表
- 数据结构实验之链表九:双向链表
- 数据结构实验之链表九:双向链表
- 数据结构实验之链表九:双向链表
- 数据结构实验之链表九:双向链表
- 数据结构实验之链表九:双向链表
- 数据结构实验之链表九:双向链表
- 数据结构实验之链表九:双向链表
- 数据结构实验之链表九:双向链表
- 数据结构实验之链表九:双向链表
- iOS 架构(根据一些网上资料 整理希望大家能够用到)
- View的事件分发机制(ViewGroup篇)
- caffe预测、特征可视化python接口调用
- ubuntu android系统下 apk编译运行 查看系统属性
- 一张图理解prototype、proto和constructor的三角关系
- 数据结构实验之链表九:双向链表
- c++与java中函数重载区别与相同点
- ThreadLocal是什么、什么时候用、怎么用
- hadoop MapReduce 笔记
- js 判断是脚本打开页面还是复制地址打开页面
- ios 屏幕适配
- iptable
- NYOJ499迷宫
- 05、CSS3新增文本属性