注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

告别迷茫

梦想与现实的差距,就是我们生活的意义。因为我们有差距,我们才会一直积累,在努力。

 
 
 

日志

 
 

俩个struct的链表的工作  

2014-09-30 21:23:42|  分类: 数据结构---严老 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

定义的结构:

typedef struct Lnode
{
int data;
Lnode *next;

}*Link;

typedef struct LinkList
{
Link head,tail;//这里面我们的没有建立结点,只是标记我们的头尾,和长度!
int length;
};

基本的一些简单的炒作的实现:

void FreeNode(Link &l)//销毁我们的某个结点;
{
free(p);
p=NULL;
}

//这里的东西视乎我好像没有搞得秦楚嘎!
bool InitList(LinkList &l)
{// 构造一个空的线性链表
Link p;
p=(Link)malloc(sizeof(Lnode));//建头立我们的头结点
if(p)
{
l.head=l.tail=p;//头结点给我们的head保存到了;
l.length=0;
return true;
}
return false;
}

bool ClearList(LinkList &l)
{
Link p,q;
if(l.head!=l.tail)
{
q=p=l.head->next;
l.head=NULL;
while(q!=l.tail)
{
q=p->next;
free(p);
p=q;
}
free(q);
l.length=0;
l.head=l.tail;
return true;
}
return false;
}

bool DestroyList(LinkList &l)
{
ClearList(l);
free(l.head);//销毁掉我们的头结点;
l.head=NULL;
l.tail=NULL;
l.length=0;
return true;
}

bool Append(LinkList &l,Link s)//把拥有结点的s的后面所有的带有的全部的带进去;不晓得大概有多少??
{
l.tail->next=s;
int i=1;
while(s->next)//这里你的注意啦!为什么判断后面个是不是null,tail==s的执行啊!
{
i++;
s=s->next;

}
l.length+=i;
l.tail=s;
return true;

}

Link PositionPrior(LinkList &l,Link e)
{
// 已知p指向线性链表L中的一个结点,返回p所指结点的直接前驱的位置
Link p;
p=l.head->next;//怎么和有节点的产生联系??
if(p==q)
{
//没有前驱;
return NULL;
}
while(p->next!=e)//p->next 了 就是证明了我们的后面还有
{
p=p->next;
}
return p;

}

// 删除线性链表L中的尾结点并以q返回,改变链表L的尾指针指向新的尾结点
bool RemoveTail(LinkList &l,Link &q)
{
Link p,q;
p=l.head;
if(l.length==0)
{
q=NULL;
return false;
}
while(p->next!=l.tail)
{
p=p->next;
}
l.tail=p;
p->next=NULL;
l.length--;
return true;
}
bool SetCurElement(Link p,int e)
{ //已知p指向线性链表中的一个结点,用e更新p所指结点中数据元素的值
p->data=e;
return true;
}
int GetCurElement(Link p)
{// 已知p指向线性链表中的一个结点,返回p所指结点中数据元素的值
return p->data;
}
bool ListIsEmpty(LinkList &l)
{//判断我们的表格是否为空
if(l.length==0)
{
return false;
}
return true;
}

int ListLength(LinkList &l)
{//求解我们的表长
return l.length;
}
bool ListTraver(LinkList &l)
{
Link p;
p=l.head->next;
if(l.length==0)
{
return;
}
while(p)
{
cout<<p->data<<" ";
p=p->next;
}
return true;
}

bool OrederInsert(LinkList &l,int e)
{//在我们的有序表中插入值e,且按照我们的有序的顺序排列
Link p,q;
p=l.head;//前面个元素的值;
q=p->next;//后面个元素的值得大小;
while(q&&(q->data<e))
{
p=q;
p=p->next;
}
Link o;
o=(Link)malloc(sizeof Lnode);
p->next=o;
o->next=q;
l.length++;
if(!p)//是否在我们的表端进行插入呢?
{
l.tail=o;
}
return true;

}


  评论这张
 
阅读(5)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017