当前位置:首页 » 编程语言 » c语言求链表长度
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言求链表长度

发布时间: 2022-01-13 04:14:12

A. c语言求链表长度(改bug

你在主函数中初始化了链表每个节点了么?

B. 下列代码用C语言求单链表的长度为什么不对

/*

14 25 36 96 85 74 12 45 78 -1

78 45 12 74 85 96 36 25 14

36 98 52 15 -1

36 98 52 15

n = 9

m = 4

Press any key to continue

*/

#include<stdio.h>
#include<stdlib.h>
//定义类型
typedefintdatatype;
typedefstructnode{
datatypedata;
structnode*next;
}linklist;

//声明函数原型
linklist*CreatelistF();
linklist*CreatelistR();
voidPrintlist(linklist*);
intLength(linklist*);

intmain(){
intn,m;
linklist*A,*B;
A=CreatelistF();
Printlist(A);
B=CreatelistR();
Printlist(B);
n=Length(A);
printf("n=%d ",n);
m=Length(B);//m还是n?
printf("m=%d ",m);
return0;
}

linklist*CreatelistF(){//头插法建立单链表
linklist*head,*p;
datatypedata;
head=(linklist*)malloc(sizeof(linklist));
head->next=NULL;
while(scanf("%d",&data)==1&&data!=-1){
p=(linklist*)malloc(sizeof(linklist));
p->data=data;
p->next=head->next;
head->next=p;
}
returnhead;
}

linklist*CreatelistR(){//尾插法建立单链表
linklist*head,*p,*r;
datatypedata;
head=(linklist*)malloc(sizeof(linklist));
head->next=NULL;
r=head;
while(scanf("%d",&data)==1&&data!=-1){
p=(linklist*)malloc(sizeof(linklist));
p->data=data;
r->next=p;
r=p;
}
r->next=NULL;
returnhead;
}

voidPrintlist(linklist*head){//打印单链表
linklist*p=head->next;
while(p!=NULL){
printf("%d",p->data);//应该是p->data,不是p,格式是"%d"
p=p->next;
}
printf(" ");
}

intLength(linklist*A){//单链表的长度
inti=0;
linklist*p=A->next;
while(p){
p=p->next;
i++;
}
returni;
}

C. 求大神帮忙。c语言,求单链表的长度。

typedef
struct
LNode
{
int
date;
struct
LNode
*next;
}
LNode,
*LinkList;
/*线性链表类型
*/
typedef
int
Status;
int
CreatLinkList_L(LinkList
&L)/*逆位序输入n个元素的值,建立带头节点的单链线性表L
*/
{
int
i,n;
printf("输入n的值");
scanf("%d",&n);
LinkList
p,
p2;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;/*先建立一个带头节点的单链表*/
p2
=
L;
for(i=n;i>0;--i)
{
p
=
(LinkList)malloc(sizeof(LNode));
scanf("%d",&(p->date));
p->next
=
p2->next;
p2->next
=
p;
}
return
OK;
}
Status
ListLength_L(LinkList
L)
{
int
i=0;
LinkList
p
=
L;
p
=
p->next;
while(p!=NULL)
{
printf("%d\n",
p->date);
p
=
p->next;
i++;
}
return
i;
}
void
DeleteLinkList_L(LinkList
L)
{
LinkList
p
=
L->next;
while(p)
{
free(L);
L
=
p;
p
=
L->next;
}
}
void
main()
{
LinkList
L
=
NULL;
CreatLinkList_L(L);
printf("%d\n",
ListLength_L(L));
DeleteLinkList_L(L);//动态分配的内存应主动释放
}

D. c语言链表 输出和求链表长度的问题,大部分程序都写完就是不知道get_length怎么写,打问号的地方求帮忙写

单项链表的话要对尾节点做空处理或者特殊标记 遍历链表 直到 ->link ==null 停止计数

E. C语言中如何创建一个给定长度的链表

  1. 算法:创建一个空链表,插入n个数据;除头结点外,其它结点不用命名。

  2. 例程:

    #include<stdio.h>
    #include<stdlib.h>
    typedefstructList{
    intdata;
    structList*next;
    };
    Lisp*creaList(intn){
    List*pL=NULL;
    for(i=0;i<n;i++)addList(pL);
    returnpL;
    }
    voidaddList(List*pL){
    void*p=pL;
    /*lookuptail*/while(p->next!=NULL){p=p->next;}
    p->next=malloc(sizeofstructList);
    /*initializep->next*/memset(p->next,0,sizeofstructList);
    }
    intmain(){
    List*p;
    p=creaList(n);
    return0;
    }