第三次

单链表:线性表的链接存储结构

单链表的结点结构:
在这里插入图片描述

data:存储数据元素

next:存储指向后继结点的地址

单链表的结点结构:

template

structNode

{

T data;

Node *next;

};

Node *s, *first;
在这里插入图片描述

引用数据元素: 在这里插入图片描述

引用指针域: s->next;

单链表类的声明:

template

class LinkList

{

public:

LinkList( );

LinkList(Ta[ ], intn);

~LinkList( );

Int Length( );

T Get(inti);

Int Locate(T x);

void Insert(inti, T x);

T Delete(inti);

void PrintList( );

private:

Node *first;

};

遍历:void PrintList();
在这里插入图片描述

template

intLinkList:: PrintList()

{

p=first->next;

while (p!=NULL)

{
cout<data;

p=p->next; }

}

求线性表的长度:int Length();
在这里插入图片描述

template

int LinkList:: Length()

{

p=first->next;count=0;

while (p!=NULL)

{ count++; p=p->next; }

return count;

}

按位查找:T Get(inti);
在这里插入图片描述

template

T
LinkList::Get(inti)

{
p=first->next;

j=1;

while (p!=NULL && j<i)

{ p=p->next;
j++; }

if (p==NULL)
throw “位置”;

else return p->data;

}

按值查找:int Locate(T x )
在这里插入图片描述

template

intLinkList::Locate(T x)

{

p=first->next;

j=1;

while §

{ if(p->data==x)return j;

else {
p=p->next; j++; }

}

return 0;

}

插入:void Insert(inti, T x);
在这里插入图片描述

template

void LinkList::Insert(inti, T x)

{

p=first ;

j=0;

while (p!=NULL && j<i-1)

{ p=p->next; j++; }

if (p==NULL) throw “位置”;

else {

s=new Node;

s->data=x;

s->next=p->next;

p->next=s; }

}

构造函数:

(1)
无参构造函数LinkList()

template

LinkList:: LinkList()

{

first=new
Node;

first->next=NULL;

}

(2)
有参构造函数 LinkList(Ta[ ], intn)

头插法:

template

LinkList:: LinkList(Ta[ ], intn)

{

  first=new

Node;

first->next=NULL;

for (i=0; i<n; i++)

{ s=new Node;

s->data=a[i];

s->next=first->next;

    first->next=s; }

}

尾插法:

template

LinkList:: LinkList(Ta[ ], intn)

{

first=new Node ;

rear=first;

for (i=0; i<n; i++)

{ s=new Node ;

s->data=a[i];

rear->next=s;

rear=s;

}

rear->next=NULL;

}

删除:T Delete(int i);
在这里插入图片描述

template

T LinkList::Delete(int i)

{

p=first ;

j=0;

while (p && j<i-1)

{ p=p->next; j++; }

if (p==NULL | | p->next ==NULL)

throw “位置”;

else {

q=p->next;

x=q->data;

p->next=q->next;

delete q;

return x; }

}

析构函数: ~LinkList( );

template

LinkList:: ~LinkList( )

{

p=first;

while (p!=NULL)

{ q=p;

p=p->next;

delete q;
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值