导航:首页 > 源码编译 > 线性单链表长度的算法

线性单链表长度的算法

发布时间:2022-05-05 11:24:34

1. 怎样写出计算单向链表长度的算法

定义一个记录长度的变量length 再定义一个指针指向头结点 然后判断下一个节点是否为空 不为空length++ 循环判断 直到定义哪个指针指向的对象为空

2. 建立一个单链表,并求其长度的算法描述

int Length(PLNode head)/*求长度*/
{
int n=0;
PLNode p;
p=head->next;
while(p)
{
n++;
p=p->next;
}

从头节点开始,遍历链表,如果未到链表末尾,则长度加一,如此反复,知道链表结尾

3. 写出在带头结点的动态单链表结构上求线性表的长度的算法: int LengthList( Node *L ) 谢谢!!

int LengthList( Node *L )

{
Node *p = L->next; //将p初始指向链表中第一个节点的地址

int length = 0;

while(p) //当p指向的地址不为空时,继续循环计算长度

{

++length;

p = p->next; //链表长度加1后,将p指向其后继节点地址

}

return length;

}

4. 设计一个计算表头指针为LK_h的单链表长度(即结点个数)的算法

typedef struct LNode { int data; struct LNode *next; }LinkList; LinkList *LK_h; int count() { LinkList *q; q=LK_h->next; int i=0; while(q->next!=NULL) { i++; q=q->next; } return i; }

5. 求单链表的长度

struct node {
int data;
struct node *next;
} ;

创建单链表后,最后一个结点的next是NULL,据此来遍历表,获得长度。

void get_len( struct node *head )
{
struct node *p=head->next ;
int len=0;
while ( p )
{
len++;
p=p->next;
}
head->data=len ; //存储长度到头结点
}

6. 求单链表的长度的递归算法(C语言格式)

求单链表的长度函数名为linklistlength
单链表用结构体linklist表示

int linklistlength(linklist *head)
{
if(!head) return 0;
return linklistlength(linklist *head->next)+1;
}

7. 【数据结构】求线性表的长度和线性表上的查找算法

/* 顺序存储类型*/
typedef struct
{ ElemType data[MAXSIZE]; /*存放线性表的数组*/
int length; /* length是顺序表的长度*/
}SqList; SqList L;
/* 求顺序表长度*/
int ListLength(SqList L)
{return(L.length);}
/* 给定序号从顺序表中查找元素*/
void ListGet(SqList L ,int i)
{ if(L.length==0) printf("顺序表空\n");
else if(i<1||i>L.length) printf("查找的位置不正确\n");
else printf("顺序表中第%d个元素的值为:%d\n",i,L.data[i-1]);
}
/* 从顺序表中查找与给定元素值相同的元素在顺序表中的位置*/
int ListLocate(SqList L, ElemType x)
{int i=0;
while(i<L.length && L.data[i]!=x)
i++;
if (i<L.length) return (i+1);
else return 0;
}

8. 求几个有关链表的最基本算法

这个也太多了!
1.循环单链表,且含有头结点的
p = head->next;
for(len=0;p->next!=head;p=p->next)
{
len++ //长度加1
}
2.插入
Status ListInsert(DuLinkList L, int i, ElemType e)
{
DuLinkList p, s;
//i值不合法
if(i < 1 || i > ListLength(L) + 1) return ERROR;

//在L中确定第i个元素前驱的位置指针p
p = GetElemP(L, i - 1);

//p=NULL,即第i个元素的前驱不存在(设头结点为第1个元素的前驱)
if(!p) return ERROR;

//给插入的数据分配空间
s = (DuLinkList)malloc(sizeof(DuLNode));

//如果为空,分配失败
if(!s) return OVERFLOW;

//在第i-1个元素之后插入
s->data = e;
s->prior = p;
s->next = p->next;
p->next->prior = s;
p->next = s;

return OK;
}
删除
Status ListDelete(DuLinkList L,int i,ElemType *e)
{
DuLinkList p;

// i值不合法
if(i < 1) return ERROR;

// 在L中确定第i个元素的位置指针p
p = GetElemP(L, i);

// p=NULL,即第i个元素不存在
if(!p) return ERROR;
*e = p->data;
p->prior->next = p->next;
p->next->prior = p->prior;
free(p);
return OK;
}
3.带有头结点
p=head->next;
head->next =NULL;
q= head;
while(p)
{
q->next = p;
q = p;
p=p->next
}
4.带头结点
p=head->next;
head->next = head;
q = head;
while(p!=head)
{
if(head->next = head){q->next=p;q->next = head;}
else{q->next = p;}
q = p;
}
5.带头结点
p = head->next;
p->prior = NULL;
q = head;
while(p)
{
q->prior = p;
q->next = p->next;
p->next->prior = q;
p->next = q;

}

9. 试写一算法在带头结点的单链表结构上实现线性表操作Length(L)。下面各个步骤的解释要详细

intListLength_L(LinkList &L)
{
int i=0;//i存储链表长度,

初始为0
LinkList p=L;//p为链表的指针,

初始为头指针,指向头结点
if(p) p=p-next;//如果p指向的头结点不为空,

p指向带数据的第一个结点
while(p){//如果p非空,i长度加1,且指向下一个结点
p=p->next;


i++;}

return i;

//返回i,即链表的长度
}。

阅读全文

与线性单链表长度的算法相关的资料

热点内容
喷油螺杆制冷压缩机 浏览:578
python员工信息登记表 浏览:376
高中美术pdf 浏览:160
java实现排列 浏览:512
javavector的用法 浏览:981
osi实现加密的三层 浏览:231
大众宝来原厂中控如何安装app 浏览:915
linux内核根文件系统 浏览:242
3d的命令面板不见了 浏览:525
武汉理工大学服务器ip地址 浏览:148
亚马逊云服务器登录 浏览:524
安卓手机如何进行文件处理 浏览:70
mysql执行系统命令 浏览:929
php支持curlhttps 浏览:142
新预算法责任 浏览:443
服务器如何处理5万人同时在线 浏览:250
哈夫曼编码数据压缩 浏览:425
锁定服务器是什么意思 浏览:383
场景检测算法 浏览:616
解压手机软件触屏 浏览:349