Page 56 - 高中 信息技术 选择性必修1 数据与数据结构
P. 56

第二章 数据的存储方式                                                                                                                                                                                                   2.3 数据的链式存储与组织







                      (续表)
                                 功能                                            程序段

                                                      p=p->next;
                                                     j=++;
                                                    }
                                                    if(!p) return false;    //没有找到插入位置,返回false
                         在链表第i(i>0)个位置              q=new LinkNode;        //创建待插入结点
                       前插入新的结点。                     q->data=e;             //将数据存入结点
                                                    q->next=p->next;       //修改指针域,插入结点
                                                    p->next=q;
                                                    return true;
                                             广东教育出版社
                                                 }
                                                 //删除链表的第i(i>0)个结点
                                                 //成功删除返回true,失败返回false
                                                 bool ListDelete(LinkList &L,int i)
                                                 {
                                                    LinkNode  * p, * q;
                                                    int j;
                                                    //查找第i-1个结点
                                                    p=L;j=0;
                                                    while (p&&j<i-1)
                         从链表中删除第i(i>0)              {
                       个结点。                           p=p->next;
                                                      j=++;
                                                    }
                                                    if(!p) return false;     //没有找到删除位置,返回false
                                                    q=p->next;
                                                    if(!q) return false;     //第i个结点不存在,返回false
                                                    p->next=q->next;         //修改指针域,使待删除结点脱离链表
                                                    delete q;                //释放结点内存空间
                                                    return true;
                                                 }

                                                 //从链表中取第i(i>0)个元素
                                                 string GetElement(LinkList &L,int i)
                                                 {
                                                    LinkNode  * p;
                                                    int j;
                                                    //查找第i个结点
                                                    p=L;j=0;
                         从链表中取得第i(i>0)
                                                    while(p&&j<i)
                       个元素。
                                                    {
                                                      p=p->next;
                                                      j++;
                                                    }
                                                    if(p) return p->data;   //结点存在,返回结点数据
                                                    else return NULL;      //不存在,返回NULL
                                                 }

              48  48







          21X2204.indd   48                                                                                        2019/9/26   13:53:09
   51   52   53   54   55   56   57   58   59   60   61