博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《数据结构》 循环链表和双向链表常用操作代码集合
阅读量:4122 次
发布时间:2019-05-25

本文共 2075 字,大约阅读时间需要 6 分钟。

Ps:每段代码中,添加了署名Solo的代码为博主本人所写,其余来自课本或者老师。

大量操作等同于单链表。重复的操作不再贴出,可以查看之前的博文。

循环链表

//结构体部分同单链表 略//初始化循环链表InitCLinkList(LinkList *CL){    *CL = (LinkList)malloc(sizeof(Node));    //建立循环链表的指针    (*CL)->next = *CL;    //建立空的循环链表}//尾插法建立循环单链表void CreateCLinkList(LinkList CL)/*CL是定义好的,已经初始化好的、带头结点的空循环链表的头指针通过键盘输入元素值*/{    Node *rear, *s;    char c;    rear = CL;    /*rear指针动态地指向链表的当前表尾,其初值指向头结点*/    while((c = getchar()) != '$')        {            s = (Node *)malloc(sizeof(Node));            s->data = c;            rear->next = s;            s = rear;        }     rear->next = CL;    /*最后一个节点的nxt域指向头结点*/}//循环链表的合并算法(1)LinkList merge_1(LinkList LA, LinkList LB){   /*此算法将采用头指针的循环单链表的首尾链接起来*/    Node *p,*q;    p =LA;    q = LB;    while(p->next != LA) p = p->next;    while(q->next != LB) q = q->next;    q->next = LA;   //修改表LB的尾指针,指向表LA的头结点    p->next = LB->next;    //修改LA的尾指针,指向LB的首元结点    free(LB);    return(LA);}//循环链表的合并算法(2)LinkList merge_2(LinkList RA, LinkList RB)     //注意,RA、RB是尾指针{   /*此算法将两个采用尾指针的循环单链表的首尾链接起来*/    Node *p;    p = RA->next;    /*保存链表RB的头结点地址*/    RA->next = RB->next->next;    /*链表RB的开始结点链到链表RA的终端结点之后*/    free(RB->next);    /*释放链表RB的头结点*/    RB->next = p;    /*链表RB的开始结点链到链表RA的终端结点之后*/    return RB;}

双向链表

//双向链表的结构体定义如下typedef struct DNode{    ElemType data;    struct DNode *prior, *next;} DNode, *DoubleList;#define OK 1#define ERROR 0//双向链表的前插操作int DlinkIns(DoubleList L, int i, ElemType e){    DNode *s, *p;    p = L; k = 0;    while(p && k
next; k++; } if(!p || k>i) return ERROR; s = (DNode *)malloc(sizeof(DNode)); if(s) { s->data = e; s->prior = p->prior; p->prior->next = s; s->next = p; p->prior = s; //四个步骤不能换位置,否则会产生指针丢失 return OK; }}//双向链表的删除操作int DLinkList(DoubleList L; int i; ElemType *e){ DNode *p; p = L; k = 0; while(p && k
next; k++} if(!p || k>i) return ERROR; *e = p->data; p->prior->next = p->next; p->next->prior = p->prior; free(p); return OK;}

zhihu:Solo | weibo@从流域到海域

转载地址:http://wbvpi.baihongyu.com/

你可能感兴趣的文章
vue 项目中图片选择路径位置static 或 assets区别
查看>>
vue项目打包后无法运行报错空白页面
查看>>
Vue 解决部署到服务器后或者build之后Element UI图标不显示问题(404错误)
查看>>
element-ui全局自定义主题
查看>>
facebook库runtime.js
查看>>
vue2.* 中 使用socket.io
查看>>
openlayers安装引用
查看>>
js报错显示subString/subStr is not a function
查看>>
高德地图js API实现鼠标悬浮于点标记时弹出信息窗体显示详情,点击点标记放大地图操作
查看>>
初始化VUE项目报错
查看>>
vue项目使用安装sass
查看>>
HTTP和HttpServletRequest 要点
查看>>
在osg场景中使用GLSL语言——一个例子
查看>>
关于无线PCB中 中50欧姆的特性阻抗的注意事项
查看>>
Spring的单例模式源码小窥
查看>>
后台服务的变慢排查思路(轻量级应用服务器中测试)
查看>>
MySQL中InnoDB事务的默认隔离级别测试
查看>>
微服务的注册与发现
查看>>
bash: service: command not found
查看>>
linux Crontab 使用 --定时任务
查看>>