题解 | #牛牛的单链表求和#
牛牛的单链表求和
http://www.nowcoder.com/practice/a674715b6b3845aca0d5009bc27380b5
#include<stdio.h>
#include<stdlib.h>
int N;
int val;
struct ListNode
{
int data;
struct list_node *next;
};
typedef struct ListNode set;
set *creat_list_node(int c_data)//创建链表结点
{
set *new_node=NULL;
new_node=(set*)malloc(sizeof(set));
memset(new_node,0,sizeof(set));
new_node->data=c_data;
new_node->next=NULL;
return new_node;
}
set *tail_node(set *Headnode, int t_data)//尾插函数
{
set *new_node=creat_list_node(t_data);//将要插入的内容
set *insert_node=Headnode;//确定头结点位置
while(insert_node->next!=NULL)//判断是否为表尾
{
insert_node=insert_node->next;//如果不是,指向下一个。
}
insert_node->next=new_node;//新结点的内容写入末尾结点的下一个。
return insert_node; //返回新插入表中的值
}
set *sum_node(set *HeadNode ,int s_data)
{
set *clemnt_node=HeadNode;//头结点
int sum=0;
for(int i=0;i<=N;i++)//结点从第一个开始。
{
sum=sum+clemnt_node->data;//累加
clemnt_node=clemnt_node->next;//指针指向下一个结点,取下一个结点里的内容
}
return sum;
}
int main()
{
set *Headnode=creat_list_node(N);//确定头结点位置
while(scanf("%d\n",&N)!=EOF)
{
for(int i=0;i<N;i++)//尾插获取完整链表
{
scanf("%d ",&val);
tail_node(Headnode, val);
}
printf("%d\n",sum_node(Headnode,val));//求和
}
}