2054=数据结构实验之链表九:双向链表

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 struct node
 4 {
 5     int data;
 6     struct node*next,*last;
 7 };
 8 int main()
 9 {
10     int m,n,x,i,a;
11     struct node*head,*p,*end;
12     head=(struct node*)malloc(sizeof(struct node));
13     head->next=NULL;
14     end=head;
15     scanf("%d %d",&n,&m);
16     for(i=0; i<n; i++)
17     {
18         p=(struct node*)malloc(sizeof(struct node));
19         scanf("%d",&p->data);
20         p->next=NULL;
21         end->next=p;
22         p->last=end;//双向链表其实和单向链表没啥区别,就是在下一个加了一个(上一个)。
23         end=p;
24     }
25     for(i=0; i<m; i++)
26     {
27         scanf("%d",&a);
28         for(p=head->next; p; p=p->next)//这里是head不是NULL;
29         {
30             if(p->data==a)
31             {
32                 if(p->last!=head&&p->next!=NULL)printf("%d %d\n",p->last->data,p->next->data);
33                 else if(p->last!=head)printf("%d\n",p->last->data);
34                 else if(p->next!=NULL)printf("%d\n",p->next->data);
35             }
36         }
37     }
38     return 0;
39 }

原文地址:https://www.cnblogs.com/Angfe/p/10485243.html

时间: 2024-08-30 14:11:03

2054=数据结构实验之链表九:双向链表的相关文章

20、蛤蟆的数据结构笔记之十九双向链表

20.蛤蟆的数据结构笔记之十九双向链表 本篇名言:"人的生命,似洪水奔流,不遇着岛屿和暗礁,难以激起美丽的浪花." 之前实现的都是单向列表,那么我们来看下双向链表. 欢迎转载,转载请标明出处: 1.  双向链表 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱.所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点.一般我们都构造双向循环链表. 2.  定义结构体 typedef struct DoubleLinked

数据结构实验之链表五:单链表的拆分

数据结构实验之链表五:单链表的拆分 Time Limit: 1000MS Memory limit: 65536K 题目描述 输入N个整数顺序建立一个单链表,将该单链表拆分成两个子链表,第一个子链表存放了所有的偶数,第二个子链表存放了所有的奇数.两个子链表中数据的相对次序与原链表一致. 输入 第一行输入整数N;: 第二行依次输入N个整数. 输出 第一行分别输出偶数链表与奇数链表的元素个数: 第二行依次输出偶数子链表的所有数据: 第三行依次输出奇数子链表的所有数据. 示例输入 10 1 3 22

数据结构实验之链表三:链表的逆置

数据结构实验之链表三:链表的逆置 Time Limit: 1000MS Memory limit: 65536K 题目描述 输入多个整数,以-1作为结束标志,顺序建立一个带头结点的单链表,之后对该单链表的数据进行逆置,并输出逆置后的单链表数据. 输入 输入多个整数,以-1作为结束标志. 输出 输出逆置后的单链表数据. 示例输入 12 56 4 6 55 15 33 62 -1 示例输出 62 33 15 55 6 4 56 12 提示 不得使用数组. 来源 示例程序 /*************

数据结构实验之链表四:有序链表的归并

数据结构实验之链表四:有序链表的归并 Time Limit: 1000MS Memory limit: 65536K 题目描述 分别输入两个有序的整数序列(分别包含M和N个数据),建立两个有序的单链表,将这两个有序单链表合并成为一个大的有序单链表,并依次输出合并后的单链表数据. 输入 第一行输入M与N的值: 第二行依次输入M个有序的整数: 第三行依次输入N个有序的整数. 输出 输出合并后的单链表所包含的M+N个有序的整数. 示例输入 6 5 1 23 26 45 66 99 14 21 28 5

数据结构实验之链表二:逆序建立链表

数据结构实验之链表二:逆序建立链表 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 输入整数个数N,再输入N个整数,按照这些整数输入的相反顺序建立单链表,并依次遍历输出单链表的数据. Input 第一行输入整数N;:第二行依次输入N个整数,逆序建立单链表. Output 依次输出单链表所存放的数据. Sample Input 10 11 3 5 27 9 12 43 16 84 22 Sample Output 22

数据结构实验2——链表

1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cmath> 5 #include <algorithm> 6 #include <windows.h> 7 #include <cwchar> 8 #include <string> 9 10 using namespace std; 11 12 #define

数据结构实验之链表六:有序链表的建立

Time Limit: 1000MS Memory limit: 65536K 题目描述 输入N个无序的整数,建立一个有序链表,链表中的结点按照数值非降序排列,输出该有序链表. 输入 第一行输入整数个数N: 第二行输入N个无序的整数. 输出 依次输出有序链表的结点值. 示例输入 6 33 6 22 9 44 5 示例输出 5 6 9 22 33 44 提示 不得使用数组! 来源 示例程序 #include <stdio.h> #include <string.h> #include

2116=数据结构实验之链表一:顺序建立链表

1 #include <stdio.h> 2 #include <stdlib.h> 3 struct node 4 { 5 int data; 6 struct node*next; 7 }; 8 int main() 9 { 10 int n,i; 11 struct node*head,*end,*p; 12 head=(struct node*)malloc(sizeof(struct node));//为head在这个链表中开辟一个空间. 13 head->next

2117=数据结构实验之链表二:逆序建立链表

1 #include <stdio.h> 2 #include <stdlib.h> 3 struct node 4 { 5 int data; 6 struct node*next; 7 }; 8 int main() 9 { 10 int n,i; 11 struct node*head,*p; 12 head=(struct node*)malloc(sizeof(struct node));//为head在这个链表中开辟一个空间. 13 head->next=NULL