参考题目: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;
- }
-
相关阅读:
【毕业设计】基于单片机无线充电的4轴飞行器 -物联网 嵌入式 stm32
『heqingchun-ubuntu系统下安装nvidia显卡驱动3种方法』
说说你对Vue的keep-alive的理解
云原生技术系列:深入浅出了解 Kubernetes
0022__STM32F103正点原子学习笔记系列——DMA
【dgl学习】dgl.canonical_etypes函数解析
element plus 切换页面报错‘emitsOptions‘和‘insertBefore‘
Nginx+cpolar实现内网穿透多个Windows Web站点端口
Numpy 计算平均值,中位数,方差,标准偏差
C++ 使用Windows的API CreateDirectory 创建多层级文件夹
-
原文地址:https://blog.csdn.net/UncleJokerly/article/details/126179639