单向链表改双向链表
-数据结构题目
(原题来自严蔚敏老师教材习题册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