逆置元素
来源:互联网 发布:知青子女 知乎 编辑:程序博客网 时间:2024/05/22 05:01
#include <iostream>#include<stdio.h>#include<malloc.h>using namespace std;typedef struct DNode{ int data; struct DNode *prior; struct DNode *next;}DLinkList;void InitList(DLinkList *&L){ L=(DLinkList *)malloc(sizeof(DLinkList)); //创建头结点 L->prior=L->next=NULL;}void CreateListF(DLinkList *&L,int a[],int n)//头插法建双链表{ DLinkList *s; int i; L=(DLinkList *)malloc(sizeof(DLinkList)); //创建头结点 L->prior=L->next=NULL; for (i=0; i<n; i++) { s=(DLinkList *)malloc(sizeof(DLinkList));//创建新结点 s->data=a[i]; s->next=L->next; //将*s插在原开始结点之前,头结点之后 if (L->next!=NULL) L->next->prior=s; L->next=s; s->prior=L; }}void DispList(DLinkList *L){ DLinkList *p=L->next; while (p!=NULL) { printf("%d ",p->data); p=p->next; } printf("\n");}void DestroyList(DLinkList *&L){ DLinkList *p=L,*q=p->next; while (q!=NULL) { free(p); p=q; q=p->next; } free(p);}void reverse1 (DLinkList *&L){ DLinkList *p=L->next,*q; L->next=NULL; while(p!=NULL) { q=p->next; p->next=L->next; if(L->next!=NULL) L->next->prior=p; L->next=p; p->prior=L; p=q; }}int main(){ int i,n; int a[100]; scanf("%d",&n); for(i=0; i<n; i++) scanf("%d",&a[i]); DLinkList *L; InitList(L); CreateListF(L,a,n); reverse1(L); DispList(L); DestroyList(L); return 0;}
阅读全文
0 0
- 逆置数组元素
- 元素逆置
- 逆置元素
- 队列元素逆置算法
- 【C++】逆置线性表中的元素
- 环形队列实现元素逆置
- 数组中元素原地逆置
- 元素位置互换之逆置算法
- 顺序表、单链表元素逆置
- 元素位置互换之逆置算法
- 逆置数组元素--reverse()
- 顺序表所有元素逆置
- 元素互换之逆置算法
- 什么是模逆元素?
- 元素
- 元素
- 元素
- 元素
- Zipper 深搜与剪枝
- 如何利用Redis分布式锁实现控制并发
- MySQL运算符的优先级
- SVM学习(六):将SVM用于多类分类
- extjs滚动条超出内容可以拖动,autoScroll : false,
- 逆置元素
- kl16串口
- Android中修改ListView的分割线,xml和代码两种方式
- fatfs文件系统
- 正则表达式括号区分
- 【设计模式系列】单例模式
- JS数组
- 究竟啥才是互联网架构“高可用”
- UIView的setNeedsLayout, layoutIfNeeded 和 layoutSubviews 方法之间的关系解释