當前位置:首頁 » 編程語言 » 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;
    }