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语言中如何创建一个给定长度的链表
算法:创建一个空链表,插入n个数据;除头结点外,其它结点不用命名。
例程:
#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;
}