南阳做网站推广,建一个网页需要多少钱,搭建一个网站 优帮云,phpcms 网站转移Description
在双向链表中#xff0c;A有一个指针指向了后继节点B#xff0c;同时#xff0c;B又有一个指向前驱节点A的指针。这样不仅能从链表头节点的位置遍历整个链表所有节点#xff0c;也能从链表尾节点开始遍历所有节点。
对于给定的一列数据#xff0c;按照给定的…Description
在双向链表中A有一个指针指向了后继节点B同时B又有一个指向前驱节点A的指针。这样不仅能从链表头节点的位置遍历整个链表所有节点也能从链表尾节点开始遍历所有节点。
对于给定的一列数据按照给定的顺序建立双向链表按照关键字找到相应节点输出此节点的前驱节点关键字及后继节点关键字。
Input
第一行两个正整数n代表节点个数m代表要找的关键字的个数。
接下来输入n个整数为关键字key数据保证关键字在数列中没有重复。
接下来有m个要查找的关键字每个占一行。
Output
对给定的每个关键字输出此关键字前驱节点关键字和后继节点关键字。如果给定的关键字没有前驱或者后继则不输出。给定关键字为每个输出占一行。
Sample AC代码 #include iostream
using namespace std;
typedef struct DNode{int data;struct DNode* pr, * next;
}DNode,*DLinkList;void InitList(DLinkList L){L (DNode*)malloc(sizeof(DLinkList));L-pr NULL;L-next NULL;
}//尾插法
DLinkList TailInsert(DLinkList L, int t) {InitList(L);DNode* s, * r L;int x;while (t--) {cin x;s (DNode*)malloc(sizeof(DNode));s-data x;s-next NULL;s-pr r;r-next s;r s;}return L;
}
//请勿复制粘贴答案仅供参考
void search(DLinkList L,int x) {DNode* p L-next;while (true){if (p NULL) {break;}if (p-data x p-pr-pr ! NULL p-next ! NULL) {cout p-pr-data p-next-data endl;return;}else if (p-data x p-pr-pr NULL p-next ! NULL){cout p-next-data endl;return;}else if (p-data x p-pr-pr ! NULL p-next NULL){cout p-pr-data endl;return;}p p-next;}
}int main() {int data, num, times, x;cin num times;DLinkList L TailInsert(L,num);while (times--) {cin x;search(L, x);}return 0;
}