数据结构(线性表)
来源:互联网 发布:数控折弯机如何编程 编辑:程序博客网 时间:2024/04/26 22:39
1. 试写一算法,在无头结点的动态单链表上实现线性表操作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
2. 已知线性表中的元素以值递增有序排列,并以单链表作存储结构。试写一高效的算法,删除表中所有值大于mink且小于maxk的元素(若表中存在这样的元素)
Status Delete_Between(Linklist &L,int mink,int maxk)//删除元素递增排列的链表L中值大于mink且小于maxk的所有元素
{
p=L;
while(p->next->data<=mink) p=p->next; //p是最后一个不大于mink的元素
if(p->next) //如果还有比mink更大的元素
{
q=p->next;
while(q->data<maxk) q=q->next; //q是第一个不小于maxk的元素
p->next=q;
}
}//Delete_Between
3. 试写一算法,实现顺序表的就地逆置,即利用原表的存储空间,将线性表(a1,a2,a3,.........,an)逆置为(an,an-1,........a1).
void reverse(SqList &A)//顺序表的就地逆置
{
for(i=1,j=A.length;i<j;i++,j--)
A.elem[i]<->A.elem[j];
}//reverse
4. 试写一算法,对单链表实现就地逆置。
void LinkList_reverse(Linklist &L)//链表的就地逆置;为简化算法,假设表长大于2
{
p=L->next;q=p->next;s=q->next;p->next=NULL;
while(s->next)
{
q->next=p;p=q;
q=s;s=s->next; //把L的元素逐个插入新表表头
}
q->next=p;s->next=q;L->next=s;
}//LinkList_reverse
分析:本算法的思想是,逐个地把L的当前元素q插入新的链表头部,p为新表表头.
5. 已知由一个线性链表表示的线性表中含有:类字符的数据元素(如:字母字符、数字字符和其他字符),试编写算法将该线性链表分割为三个循环链表,其中每个循环链表表示的线性表中均只含一类字符。
Status LinkList_Divide(LinkList &L,CiList &A,CiList &B,CiList &C)//把单链表L的元素按类型分为三个循环链表.CiList为带头结点的单循环链表类型.
{
s=L->next;
A=(CiList*)malloc(sizeof(CiLNode));p=A;
B=(CiList*)malloc(sizeof(CiLNode));q=B;
C=(CiList*)malloc(sizeof(CiLNode));r=C; //建立头结点
while(s)
{
if(isalphabet(s->data))
{
p->next=s;p=s;
}
else if(isdigit(s->data))
{
q->next=s;q=s;
}
else
{
r->next=s;r=s;
}
}//while
p->next=A;q->next=B;r->next=C; //完成循环链表
}//LinkList_Divide
- 数据结构(线性表)
- 数据结构(线性表)
- 数据结构(线性表)
- 数据结构(线性表)
- 数据结构(二)--线性表
- 数据结构(2线性表)
- 基本数据结构(线性表)
- 数据结构-线性表(2)
- 数据结构(线性表)-单链表
- 数据结构(一)---线性表
- 数据结构(13)线性表
- 数据结构(一)线性表
- [数据结构]线性表(一)
- [数据结构]线性表(二)
- 【数据结构】线性表(一)
- 【数据结构】线性表(二)
- 数据结构线性表(1)
- 数据结构线性表(2)
- JS应用(资料很全)
- 完全无法集中精力
- 矢量图形技术
- 理解Asp.net中的View state
- 仅对8位,24位图像进行灰度处理
- 数据结构(线性表)
- 很旧以前都申请了这个 BOLG但是一直懒得写东西 看到周围的朋友都有BOLG了 从今天开始我会逐渐往里面添加文章的 请朋友们支持我
- 文明3_PTW玩转世界_C3C征服_[新手终极指南]
- MFC学习点滴二:MFC中的菜单路由
- ArcIMS基本语法
- 什么是托管
- IIS访问ASP页面时报错The requested resource is in use.的解决方法
- eXtremeComponents 的最后一页
- SQL Server应用程序中的高级SQL注入