实验一 单链表
- 实验要求
输入数据(设为整型)建立单链表,并求相邻两节点data值之和为最大的第一节点
- 实验结果

(一)程序代码
#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
void IntiList(LinkList &L)
{
L = (LinkList)malloc(sizeof(struct LNode));
if (!L)
exit(1);
L->next = NULL;
}
void CreatList(LinkList &L)
{
LNode * p = NULL;
p = L;
printf("请输入一组整数(以0为结束符,数之间回车):");
int a;
do{
scanf("%d", &a);
if (!a) break;
LNode * s = (LNode *)malloc(sizeof(struct LNode));
s->data = a;
s->next = NULL;
p->next = s;
p = p->next;
}while (a != 0);
}
void ListTraverse(LinkList L)
{
LNode * p = L->next;
while (p)
{
printf("%d", p->data);
printf(" ");
p = p->next;
}
printf("\n");
}
void adjmax(LinkList L)
{
LNode * p = NULL;
p = L->next;
int maxsum = -1e-9;
LNode *q = NULL;
while (p->next)
{
if (p->data + p->next->data > maxsum)
{
maxsum = p->data + p->next->data;
q = p;
}
p = p->next;
}
printf("第一个节点的data值为:%d\n", q->data);
}
void DestroyList(LinkList &L)
{
LNode * p = NULL;
p = L->next;
while(p)
{
L->next = p->next;
free(p);
p = L->next;
}
free(L);
}
int main()
{
LinkList L;
int reply;
IntiList(L);
do{
CreatList(L);
ListTraverse(L);
adjmax(L);
printf("是否继续输入下一组数据:是:1,否:0\n");
scanf("%d", &reply);
}while (reply == 1);
DestroyList(L);
return 0;
}
(二)实现样例

727

被折叠的 条评论
为什么被折叠?



