关注公众号程序猿从入门到入土查询更方便哦
【6063】将单链表每个元素的值修改为该节点值加上后继节点值,若没有后继元素则保持不变
例如:已知单链表:
2 4 10 6
则修改后为:
6 14 16 6
#include<iostream>
#define RESULT int
using namespace std;
typedef struct Node { //定义链表结构体
int data = 0;
Node *next;
}LNode, *LinkList;
RESULT InitList(LinkList &L); //初始化链表
RESULT InsertData_Back(LinkList &L, int data); //尾插法
RESULT Output_LinkList(LinkList& L); //打印链表
int main() {
int n = 0;
cin >> n;
LinkList L = new LNode; //给链表头节点申请空间并初始化
InitList(L);
for (int i = 0; i < n; i++) { //从尾部插入节点
int a = 0;
cin >> a;
InsertData_Back(L, a);
}
LinkList p = L; //定义工作指针
for (int i = 0; i < n - 1; i++) {
p = p->next;
p->data = p->next->data + p->data; //修改节点值
}
Output_LinkList(L); //调用输出函数
return 0;
}
RESULT InitList(LinkList &L) { //初始化
L = new LNode;
L->next = NULL;
return OK;
}
RESULT InsertData_Back(LinkList &L, int data) {
LinkList temp = new LNode; //申请空间
temp->data = data; //保存数据
temp->next = NULL;
LinkList p = L; //工作指针
while (p->next != NULL) { //查找尾节点(也可以定义list类或者结构保存头尾节点)
p = p->next;
}
p->next = temp;
return OK;
}
RESULT Output_LinkList(LinkList& L) {
LinkList temp = L->next;
while (temp != NULL) { //循环输出
cout << temp->data << " ";
temp = temp->next;
}
return OK;
}