7-3 链表倒数n个结点的乘积
本题要求计算单链表倒数n个结点的乘积。例如,给出单链表1 2 3 4 5,则倒数2个结点的乘积为20。
输入格式:
输入有2行,第一个行为2个非负整数m和n。其中m为链表结点个数,n为链表倒数结点的数量。题目保证计算结果在int范围内。 第二行为链表的m个数,以空格分隔。
输出格式:
在一行中输出倒数n个结点的乘积。
输入样例:
5 2
1 2 3 4 5
结尾无空行
输出样例:
20
结尾无空行
样例解释:
20 = 4 * 5
#include<stdio.h>
#include<stdlib.h>
struct node{
int data;
node* next;
};
node* create(int m,int n,int a[])
{
node *p,*pre,*head;
head=new node;
head->next=NULL;
pre=head;
for(int i=0;i<m;i++)
{
p=new node;
p->data=a[i];
p->next=NULL;
pre->next=p;
pre=p;
}
return head;
}
int main()
{
int m,n,a[100],c=1;
scanf("%d%d",&m,&n);
for(int i=0;i<m;i++)
scanf("%d",&a[i]);
node* l=create(m,n,a);l=l->next;
for(int i=0;i<m-n;i++)l=l->next;
while(l!=NULL){c*=l->data;l=l->next;}
if(n!=0)printf("%d",c);
else printf("0");
return 0;
}
可以说是金典链表入门了,照着书上的模板代码敲一遍基本就能写了,注意n为0的情况即可。