单向链表改双向链表
-数据结构题目
(原题来自严蔚敏老师教材习题册2.32)
题目:已知有一个单向循环链表,其每个结点中含三个域:prior,data和next,其中data为数据域,next为指向后继结点的指针域,prior也为指针域,但它的值为空(NULL),试编写算法将此单向循环链表改为双向循环链表,即使prior成为指向前驱结点的指针域。
算法思想:先建立一个单链表,然后写一个函数,将prior指针指向它的前驱元素即可完成修改。
c++代码如下:
#include <iostream>
#include <stdlib.h>
using namespace std;
typedef struct LNode
{
struct LNode *prior; //指针域
int data; //数据域
struct LNode *next; //指针域
} LNode, *LinkList;
typedef struct SListInfo
{
LinkList head; //表头结点指针
LinkList tail; //表尾结点指针
LNode *pCurNode; //当前结点指针位置
int length; //单链表的长度(元素个数)
} SListInfo;
void InitList( SListInfo &L )
{
//初始化单链表
cout<<"-进行初始化单链表操作-"<<endl;
L.head = (LNode *)malloc(sizeof(LNode)); //申请头结点存储空间
if( L.head == NULL )
cout<<"error1"<<endl; //存储空间申请失败
L.head->next
该博客讨论了一道数据结构题目,涉及将具有data和next指针域的单向循环链表改造为双向循环链表,要求在每个节点中添加prior指针,使其指向前驱节点。解决方案是首先创建单链表,然后通过特定算法更新prior指针,以完成链表的转换。博主给出了使用C++实现的代码示例。
最低0.47元/天 解锁文章
2684

被折叠的 条评论
为什么被折叠?



