第二章 线性表
程序员文章站
2022-05-26 12:02:07
...
(8)设计一个算法,删除递增有序链表中值大于mink且小于maxk: 的所有元素(mink和 maxk
是给定的两个参数,其值可以和 表中的元素相同,也可以不同)。
/*
(8)设计一个算法,删除递增有序链表中值大于mink且小于maxk: 的所有元素(mink和 maxk
是给定的两个参数,其值可以和 表中的元素相同,也可以不同)。
*/
#include <stdio.h>
#include <iostream>
#define LENGTH 5
typedef struct LNode
{
int data;
struct LNode *next;
} LNode, *LinkList;
void CreatList_R(LinkList &L, int n)
{
L = new LNode;
L->next = NULL;
LNode *r = L;
for (int i = 0; i < n; i++)
{
LNode *p = new LNode;
printf("data%d:", i + 1);
std::cin >> p->data;
p->next = NULL;
r->next = p;
r = p;
}
}
void ShowList(LinkList L)
{
LNode *p = L->next;
while (p)
{
printf("%d\t", p->data);
p = p->next;
}
printf("\n");
}
void Aim(LinkList &L, int mink, int maxk)
{
LNode *p = L->next;
LNode *pmin;
LNode *pmax;
while (p)
{
if (p->data == mink)
pmin = p;
else if (p->data == maxk)
pmax = p;
p = p->next;
}
pmin->next = pmax;
}
int main(void)
{
LinkList L;
CreatList_R(L, LENGTH);
ShowList(L);
int mink, maxk;
printf("mink:");
std::cin >> mink;
printf("maxk:");
std::cin >> maxk;
Aim(L, mink, maxk);
ShowList(L);
delete L;
return 0;
}
我这里做得时mink和maxk是链表中的元素,比较容易,当然另外一种也很简单,差不多。
运行结果:
上一篇: 数据结构--知识点总结--树