参考题目:2019软专算法题T1(链表模板)_UncleJokerly的博客-CSDN博客
代码如下:
- #include
- #include
-
- typedef struct node
- {
- int data;
- struct node *left;
- struct node *right;
- }Node,*LinkList;
-
- void InitList(LinkList &L)//初始化双向循环链表
- {
- L=(Node*)malloc(sizeof(Node));
- L->left=L;
- L->right=L;
- }
-
- //void TailInsertList(LinkList &L)//双向循环链表尾插
- //{
- // Node *p=L;
- // int a[7]={1,2,3,4,5,6,7};
- // for(int i=0;i<7;i++)
- // {
- // Node *q=(Node*)malloc(sizeof(Node));
- // q->data=a[i];
- //
- // q->right=p->right;
- // q->left=p;
- // p->right=q;
- // //p->left=q;不要加
- // p=q;
- // }
- // L->left=p;
- //}
-
- void TailInsertList(LinkList &L,int a[],int len)//双向循环链表尾插
- {
- Node *p=L;
- for(int i=0;i
- {
- Node *q=(Node*)malloc(sizeof(Node));
- q->data=a[i];
-
- q->right=p->right;
- q->left=p;
- p->right=q;
- //p->left=q;不要加
- p=q;
- }
- L->left=p;
- }
-
- void HeadInsertList(LinkList &L,int a[],int len)//双向循环链表头插
- {
- Node *p;
- for(int i=0;i
- {
- Node *q=(Node*)malloc(sizeof(Node));
- q->data=a[i];
-
- q->right=L->right;
- q->left=L;
- L->right=q;
-
- if(i==0)
- {
- p=q;
- }
- }
- L->left=p;
- }
-
- void PrintList(LinkList L)//遍历输出双向循环链表
- {
- printf("双向循环链表的序列为:\n");
- Node *p=L->right;
- while(p!=L)
- {
- printf("%d ",p->data);
- p=p->right;
- }
- printf("\n");
- }
-
- void zhaiList(LinkList L,LinkList &L1,LinkList &L2)//把L中的奇数摘出来保存到L1,把L中的偶数摘出来保存到L2
- {
- int index=1;
- Node *p=L->right;
-
- int a[100],b[100];
- int cnt1=0,cnt2=0;
- while(p!=L)
- {
- Node *q=(Node*)malloc(sizeof(Node));
-
- if(index%2==1)//是奇数,建立a数组
- {
- a[cnt1++]=p->data;
- }
- else if(index%2==0)//是偶数,建立b数组
- {
- b[cnt2++]=p->data;
- }
-
- index++;
- p=p->right;
- }
- TailInsertList(L1,a,cnt1);
- HeadInsertList(L2,b,cnt2);
- }
-
- void MergeList(LinkList &L1,LinkList &L2)//L2接到L1的后面
- {
- L1->left->right=L2->right;
- L2->right->left=L1->left;
- L2->left->right=L1;
- L1->left=L2->left;
- }
-
- int main()
- {
- LinkList L;
- InitList(L);
-
- LinkList L1;
- InitList(L1);
- LinkList L2;
- InitList(L2);
- LinkList L3;
- InitList(L3);
-
- int a[7]={1,2,3,4,5,6,7};
-
- TailInsertList(L,a,7);
- PrintList(L);
-
- zhaiList(L,L1,L2);
-
- PrintList(L1);
- PrintList(L2);
-
-
- MergeList(L1,L2);
- PrintList(L1);
-
- return 0;
- }
-
相关阅读:
Proximal Policy Optimization Algorithms
最全面的创建线程的几种方式总结,让你的需求轻松选择最合适你的线程创建方式
程序员想要网上接单却不知道如何是好?那这篇文章你可得收藏好了!
OBS键盘插件自定义diy
基于STM32+华为云设计的智能鱼缸
考研数据结构大题整合_组一(ZYL组)_做题版
【文末送书】Kali Linux与网络安全
Qt --- Day03
基于C语言的泛类型循环队列
java毕业生设计悦途旅游网计算机源码+系统+mysql+调试部署+lw
-
原文地址:https://blog.csdn.net/UncleJokerly/article/details/126179639