#include<stdlib.h> #include using namespace std;

#define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef int Status; typedef int ElemType;

typedef struct LNode { ElemType data;//结点的数据域 struct LNode *next;//结点的指针域 }LNode,*LinkList;//LinkList为指向结构体LNode的指针类型

Status InitList_L(LinkList &L){ //构造一个空的单链表L L=new LNode;//生成新结点作为头结点,用头指针L指向头结点 L->next=NULL;//头结点的指针域置空 return OK; }

//在单链表L中找到最大的元素,并将其删除 Status DeleteMax_L(LinkList &L){ if(L->next==NULL) return ERROR;//链表为空 LNode *p=L->next,*pre=L,*max_p=p,*max_pre=pre;//初始时将第一个结点设为最大值 while(p!=NULL){ if(p->data>max_p->data){//找到更大的值 max_p=p; max_pre=pre; } pre=p; p=p->next; } max_pre->next=max_p->next;//删除最大值结点 free(max_p);//释放最大值结点的空间 return OK; }

//打印单链表L Status PrintList_L(LinkList L){ LNode *p=L->next; while(p!=NULL){ cout<data<<' '; p=p->next; } return OK; }

int main() { int n; cin>>n; LinkList L; InitList_L(L);//初始化单链表 LNode *p=L; for(int i=0;i<n;i++){ int data; cin>>data; LNode *new_node=new LNode; new_node->data=data; new_node->next=NULL; p->next=new_node; p=new_node; } DeleteMax_L(L);//删除最大值结点 PrintList_L(L);//打印单链表 return 0;

C++ 单链表删除最大元素算法实现

原文地址: https://www.cveoy.top/t/topic/nble 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录