帅地 2017-04-05 14:35 采纳率: 50%
浏览 1825

有关单向循环链表头节点和第一个节点的一些问题

为什么p=L->next是指向头节点?而不是指向第一个节点,L本身不就是头节点了吗?

我看那些不是循环链表的都是p=L就直接指向头节点了;为什么是p=L->next?
求大神看看图片说明

#include
#include
#include

#define OK 1
#define ERROR 0

typedef int Status;
typedef int ElemType;

typedef struct CLNode
{
ElemType data;
struct CLNode *next;
}CLNode,*LinkCList;

Status CreateList_CL(LinkCList &L)
{
L = (CLNode *)malloc(sizeof(CLNode));
if(!L)
return ERROR;

L->next = L;//指向自己

}

Status ListEmpty_CL(LinkCList &L)
{
if(L->next = L)
return true;
else
return
false;
}

Status ListLength_CL(LinkCList L)
{
int i = 0;
LinkCList p = L->next;//指向头节点

while(p != L)
{
    i++;
    p = p->next;
}

return i;

}

//在i个位置前插入
Status ListInsert_CL(LinkCList &L,int i,ElemType e)
{
LinkCList s, p = L->next;//为什么p=L->next是指向头节点?而不是指向第一个节点,L本身不就是头节点了吗?
int j = 0;

if(i <= 0 || i > ListLength_CL(L)+1)
    return ERROR;

while(j < i-1)
{
    p = p->next;//定位到
    j++;
}

s = (CLNode *)malloc(sizeof(CLNode));
if(!s)
    return ERROR;
s->data = e;
s->next = p->next;
p->next = s;

if(p == L)//改变尾节点
    L = s;

return OK;

}

  • 写回答

1条回答

      报告相同问题?

      相关推荐 更多相似问题

      悬赏问题

      • ¥15 这段有什么bug 为什么总报错
      • ¥15 关于#php#根据url判断选择加载模板应该如何解决?会的速来捡钱!
      • ¥15 Intel Realsense深度相机(D415/D435)拍摄梯子获取梯子点云
      • ¥50 unity使用easyar录屏更换视频保存路径
      • ¥15 CECGameSession::OutputLinkSevError(iRetCode=4) LINK超时
      • ¥20 出错 textread (第 124 行) [varargout{1:nlhs}]=dataread('file',varargin{:}); %#ok<REMFF1>
      • ¥15 tensor flow目标检测环境配置问题
      • ¥15 数据库float型转换精度问题
      • ¥15 运行您代码时出现报错,如何解决?(标签-回归|关键词-无法识别)
      • ¥50 android service弹出dialog,showdialog就出错,如何解决?