| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2375 人关注过本帖
标题:初学者,求解单链表的问题
只看楼主 加入收藏
稻草人25
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2016-4-20
结帖率:40%
收藏
已结贴  问题点数:20 回复次数:4 
初学者,求解单链表的问题
一个带头结的单链表存储以整型数
设计一算法  统计链表中值为3的倍数结点的个数
函数:int countx (node*head)
搜索更多相关主题的帖子: 统计 
2016-09-08 10:38
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:10 
上次装系统不小心把硬盘洗了。。。

所以没有特别完整的。现写的,希望你能看得懂
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct node *Node;
tyoedef struct node{
int Num;
Node Next;
}node;

/* TODO (Chauncy#1#): Test1test */
int main(){
   Node Head=(Node)malloc(sizeof(struct node));//头结点,本身不保存数据,你要想保存也行,不过需要改点代码

   Node temp=Head;//temp指向链表尾
   int num;
   printf("-----------scan---------\n");

   while(scanf("%d",&num)==1){//遇到第一个非数字的字符就退出循环

       temp->Next=(Node)malloc(sizeof(struct node));
       temp->Next->Num=num;
       temp=temp->Next;
   }

temp->Next=NULL;//把链表尾的指针写上NULL

   printf("-----------print---------\n");
temp=Head->Next;//temp重新指向第一个要输出的位置

    for(int i=1;temp;i++){//i做计数器

        if(i%3==0)printf("%d ",temp->Num);
        temp=temp->Next;

    }
    return 0;
}

忘了件事,,,,你可以把从printf("-----print-----");开始到return之前的那段代码放到函数int countx()离去,调用一下就行。



[此贴子已经被作者于2016-9-8 15:35编辑过]


φ(゜▽゜*)♪
2016-09-08 15:31
cybermaster
Rank: 2
等 级:论坛游民
帖 子:9
专家分:31
注 册:2016-9-11
收藏
得分:10 
回复 楼主 稻草人25
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>

typedef struct Node
{
    int data;
    struct Node * pNext;
}NODE, * PNODE;

int main(void)
{
    int num, j = 0;
    PNODE pHead = (PNODE)malloc(sizeof(NODE));
    if(NULL == pHead)
    {
        printf("动态内存分配失败,头结点未能创建!\n");
        exit(-1);
    }
    //pHead->pNext = NULL;
    PNODE pTail = pHead;
    printf("请输入要放入链表中的元素:\n");
    while(1)
    {
        scanf("%d", &num);
        pTail->pNext = (PNODE)malloc(sizeof(NODE));
        if(NULL == pTail->pNext)
        {
            printf("动态内存分配失败,新结点未能创建!\n");
            exit(-1);
        }
        pTail->data = num;
        if(getchar() == '\n')
            break;
        pTail = pTail->pNext;

    }
    pTail->pNext = NULL;
    /*------print------*/
    printf("-----------print---------\n");
    printf("你所创建的链表为:\n");
    pTail = pHead;
    for(int i = 0; pTail; ++i)
    {    
        printf("%d ", pTail->data);
        pTail = pTail->pNext;
    }
    printf("\n");
/*统计链表中值为3的倍数结点的个数;可另外写成函数*/
    pTail = pHead;
    for(i = 0; pTail; ++i)
    {
        if(pTail->data % 3 == 0)
            ++j;
        pTail = pTail->pNext;
    }
    printf("能被3整除的元素的结点个数为:%d\n", j);
    printf("\n");
    return 0;
}

我是借鉴楼上的代码的,楼主试试看;同时也感谢楼上;
2016-09-11 11:56
稻草人25
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2016-4-20
收藏
得分:0 
回复 3楼 cybermaster
谢谢
2016-09-13 08:59
稻草人25
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2016-4-20
收藏
得分:0 
回复 2楼 书生牛犊
谢谢,,差不多明白了
2016-09-13 08:59
快速回复:初学者,求解单链表的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.045619 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved