| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2992 人关注过本帖
标题:[求助]无头结点的动态单链表上INSERT算法,是否正确?
取消只看楼主 加入收藏
舞踏祭
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-9-26
收藏
 问题点数:0 回复次数:1 
[求助]无头结点的动态单链表上INSERT算法,是否正确?
试写一算法,在 无头结点 的动态单链表上实现线性表操作 INSERT(L, i, b)







见到有个人是这样写的:

Status Insert(LinkList &L,int i,int b)
{//在无头结点链表L的第i个元素之前插入元素b
  p = L;
  q = (LinkList)malloc(sizeof(LNode));
  q.data = b;
  if (i == 1)
  {
    q.next = p;
    L = q;                             //插入在链表头部
  }
  else
  {
    while(--i>1)
    {
       p=p->next;
    }
    q->next = p->next;
    p->next = q;                     //插入在第i个元素的位置
  }
}//Insert




看不明白,所以我写了一个:

Status Insert(LinkList &L,int i,int b)
{                                     //在无头结点链表L的第i个元素之前插入元素b
    if (i <= 0)                        //位置不合法
    {
        return ERROR;
    }
    label = L;
    new = (LinkList)malloc(sizeof(LNode));   //给新元素结点初始化
    new->data = b;
    new->next = NULL;
    if (i == 1)                          //当插入位置在第一个元素之前时
    {
        if (L == NULL)                    //如果L此时为空表(没有首元结点)
        {
           new->next = NULL;
           L = new;
        }
        else                              //如果L此时非空(有首元结点)
        {
            new->next = label->next;
            label->next = new;
        }
    }
    else                                 //当插入位置不在第一个元素前时
    {
        j = 0;                           //按照1楼的提醒,这儿作了修改
        while (lable->next != NULL && j<i-1)
        {
            label = label->next;
            j++;
        }
        if (j != i-1) return ERROR;
                                              //不存在第i个元素,则ERROR
        new->next = label->next;
        label->next = new;           //插入在第i个元素的位置,原结点变为第i+1个
    }
    return(OK);
}//Insert



其中,

typedef struct LNode
{
  Elemtype data;
  struct LNode *next;
}LNode, *LinkList;



不知道是否两个都正确?

另:
头指针是指向链表中第一个结点(或为头结点或为首元结点)的指针;
头结点是在链表的首元结点之前附设的一个结点;数据域内只放空表标志和表长等信息
首元结点是指链表中存储线性表中第一个数据元素a1的结点。


头指针本身没有数据域,只是一个指针,不具有LNode型结点构造.L是头指针.

[此贴子已经被作者于2005-10-4 2:08:17编辑过]


搜索更多相关主题的帖子: 结点 INSERT 单链 算法 动态 
2005-09-26 07:25
舞踏祭
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-9-26
收藏
得分:0 

2005-10-04 02:11
快速回复:[求助]无头结点的动态单链表上INSERT算法,是否正确?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012091 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved