计算链表相邻结点和的最小值
计算链表相邻结点和的最小值
【问题描述】
以下程序的功能是创建有ct个结点的链表,ct的值从键盘输入,每个结点中包含一个整数信息(同样从键盘输入)。计算该链表中每两个相邻结点的整数和,求其中的最小值对应的结点序号(链表建成后结点序号从1到ct编号)。
【样例输入】(输入8个数,依次从尾插入链表)
8
3 4 1 2 6 7 9 10
【样例输出】(求出哪两个结点的和最小,此例为结点3和结点4的和最小)
3 4
#include <stdio.h>
#include <stdlib.h>
struct node
{
int n;
struct node *next;
};
int main( )
{
struct node *head=NULL, *tail=NULL, *p;
int i, min, s=0, index=1, ct;
scanf ( "%d", &ct ); /*从键盘输入ct的值,设ct大于1*/
for ( i=0; i<ct; i++ )
{
p =(struct node *)malloc(sizeof(struct node));/*申请新结点空间*/
scanf( "%d", &p->n );
p->next=NULL;
if ( head==NULL ) head = p;
else tail->next=p;
tail = p;
}
min = head->n + head->next->n;
i = 1;
for ( p=head->next; p!=NULL && p->next!=NULL; p=p->next )
{
s = p->n + p->next->n;
i++;
if(s<min)
{
min=s;
index=i;
}
}
printf( "%d %d", index, index+1 );
}
还没有评论,来说两句吧...