题目描述:
设计一个算法,删除一个单链表L中元素值最大的节点(假设这样的节点唯一)
解题思路:
在单链表中删除一个节点先要找到它的前驱节点,用指针p扫描整个单链表,pre指向节点p的前驱节点,在扫描时用maxp指向data域值最大的节点,maxpre指向maxp所指节点的前驱节点,当链表扫描完毕后,通过maxpre所指节点删除其后的节点。
题解基础:
利用单链表基本操作实现
C++代码实现:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef struct LNode
{
int data;
struct LNode *next;
} LinkNode;
void CreateListR(LinkNode *&L,int a[],int n) // 尾插法
{
LinkNode *s,*r;
L=(LinkNode *)malloc(sizeof(LinkNode));
r=L;
for(int i=0; i<n; i++)
{
s=(LinkNode *)malloc(sizeof(LinkNode));
s->data=a[i];
r->next=s;