#include<iostream>/*遍历链表得到最大的节点并且删除递增连表中小于a,大于b的节点*/
using namespace std;
typedef struct elemtype
{
int data;
elemtype* next;
}elemtype,*LinkList;
int CreatList(LinkList& L, int n)//创建链表
{
LinkList p, r;
L = new elemtype;
L->next = NULL;
r = L;
for (int i = 0; i < n; i++)
{
p = new elemtype;
cout << "输入链表L的第" << i + 1 << "个结点数据域:" << endl;
cin >> p->data;
p->next = NULL;
r->next = p;
r = p;
}
return 0;
}
int SearchMax(LinkList L)//找最大
{
LinkList p;
p = L -> next;
int max = p->data;
p = p->next;
while (p)
{
if (max < p->data)
{
max = p->data;
}
p = p->next;
}
return max;
}
int Delete(LinkList& L, int a, int b)删除节点
{
LinkList p,min,max,free;
p = L->next;
while (p->data < a&&p->data>b)
{
free = p;
delete free;
p = p->next;
}
p = L->next;
while (p != NULL)
{
if (p->data == a)
{
L->next = p;
}
if (p->data == b)
{
p->next = NULL;
}
p = p->next;
}
return 0;
}
void display(LinkList L)//输出链表
{
LinkList p;
p = L->next;
while (p)
{
cout<< p->data<<endl;
p = p->next;
}
printf("\n");
}
int main()
{
LinkList L;
int n,a,b;
cout << "请输入链表L的节点个数: ";
cin >> n;
CreatList(L,n);
int max;
max = SearchMax(L);
cout << "最大的结点为:" << max << endl;
cout << "原来的链表:" << endl;
display(L);
cout << "输入a,b:" << endl;
cin >> a >> b;
Delete(L, a, b);
display(L);
return 0;
}
遍历链表得到最大的节点并且删除递增连表中小于a,大于b的节点
最新推荐文章于 2023-08-31 18:24:05 发布