急呀 C语言
答案:3 悬赏:30 手机版
解决时间 2021-04-28 13:53
- 提问者网友:疯子也有疯子的情调
- 2021-04-28 06:41
有一线性表示存储在一个带头结点的循环单链表L中,写出计算线性表元素个数的算法
可不可帮我用C语言编下这道题,要完全的程序,就是可以直接可以运行的...
帮帮忙了,真的很急需
最佳答案
- 五星知识达人网友:一把行者刀
- 2021-04-28 07:11
已测试运行通过:
#include <stdio.h>
#include <stdlib.h>
typedef struct _list {
int val;
struct _list* next;
} *node, list;
node Insert( node head, node pos, int val )
{
node tmp;
tmp = ( node )malloc( sizeof( list ) );
tmp->val = val;
tmp->next = pos ? pos->next : head->next;
if ( pos ) {
pos->next = tmp;
} else {
head->next = tmp;
}
return tmp;
}
void Create( node head, int* beg, int* end )
{
node t;
head->next = t = NULL;
head->val = end - beg;
while ( beg != end ) {
t = Insert( head, t, *beg++ );
}
t->next = head;
}
int Count( node head )
{
int n = 0;
node h = head;
while( head->next != h ) {
head = head->next;
++n;
}
return n;
}
void Print( char* msg, node head )
{
node h = head;
printf( msg );
head = head->next;
while ( head != h ) {
printf( "%d ", head->val );
head = head->next;
}
putchar( '\n' );
}
int main()
{
int a[] = { 1,3,5,7,9 };
int n;
list head;
Create( &head, a, a + 5 );
n = Count( &head );
Print( "list:", &head );
printf( "COUNT:%d\n", n );
getchar();
return 0;
}
#include <stdio.h>
#include <stdlib.h>
typedef struct _list {
int val;
struct _list* next;
} *node, list;
node Insert( node head, node pos, int val )
{
node tmp;
tmp = ( node )malloc( sizeof( list ) );
tmp->val = val;
tmp->next = pos ? pos->next : head->next;
if ( pos ) {
pos->next = tmp;
} else {
head->next = tmp;
}
return tmp;
}
void Create( node head, int* beg, int* end )
{
node t;
head->next = t = NULL;
head->val = end - beg;
while ( beg != end ) {
t = Insert( head, t, *beg++ );
}
t->next = head;
}
int Count( node head )
{
int n = 0;
node h = head;
while( head->next != h ) {
head = head->next;
++n;
}
return n;
}
void Print( char* msg, node head )
{
node h = head;
printf( msg );
head = head->next;
while ( head != h ) {
printf( "%d ", head->val );
head = head->next;
}
putchar( '\n' );
}
int main()
{
int a[] = { 1,3,5,7,9 };
int n;
list head;
Create( &head, a, a + 5 );
n = Count( &head );
Print( "list:", &head );
printf( "COUNT:%d\n", n );
getchar();
return 0;
}
全部回答
- 1楼网友:渡鹤影
- 2021-04-28 08:54
p = head ;
int n = 0 ; //计数器
while(p->next)
{
p=p->next;
n ++ ; //往后走一步,计数器自加一,
}
cout<<"结点个数为: "<<n<<endl;
- 2楼网友:鱼芗
- 2021-04-28 08:18
遍历。。。。设头节点为head
p = head ;
int n = 0 ; //计数器
while(p->next)
{
p=p->next;
n ++ ; //往后走一步,计数器自加一,
}
cout<<"结点个数为: "<<n<<endl;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯