已知线性表中的元素以值递增顺序排列,并以双向链表为存储结构。试实现以下功能:删除表中所有[MinNum, MaxNum]范围内的数据。
2019-05-15 21:38
375 查看
版权声明:版权归作者所有 https://blog.csdn.net/mo_chen1025/article/details/90245706
已知线性表中的元素以值递增顺序排列,并以双向链表为存储结构。试实现以下功能:删除表中所有[MinNum, MaxNum]范围内的数据。
编程要求:
输入:
键盘输入链表的数据元素(至少 5 个)
键盘输入 MinNum, MaxNum 值
输出:
屏幕打印链表操作的结果。
#include <stdio.h> #include <stdlib.h> typedef int ElemType; typedef struct DuLNode{ struct DuLNode *prior; ElemType data; struct DuLNode *next; }DuLNode, *DuLList; void CreateList(DuLList &L,int n)//建立有n个元素的双向链表L { DuLList p,s; ElemType i; L=(DuLList)malloc(sizeof(DuLNode)); L->prior=NULL; L->next=NULL; p=L; for(i=0;i<n;i++) { s=(DuLList)malloc(sizeof(DuLNode)); printf("Please input the %d element:",i+1); scanf("%d",&s->data); p->next=s; s->prior=p; p=p->next; } p->next=NULL; } void ListDelete(DuLList &L,int i,ElemType &e)//删除第i个位置的元素并把值赋给e { DuLList p,s; int j; p=L; for(j=0;p&&j<i-1;j++) p=p->next; if(!p||j>i-1) {printf("ERROR!\n"); return;} s=p->next; e=s->data; p->next=s->next; if(p->next) p->next->prior=p; free(s); } void Function(DuLList &L,int n,int min,int max) { DuLList p,s; int i; ElemType tem; p=L; for(i=0;p&&i<n;) { s=p->next; if(s->data>=min&&s->data<=max) { ListDelete(L,i+1,tem); n--; continue; } p=p->next; i++; } } void ListPrint(DuLList L) { DuLList p; int i; p=L->next; if(!p) {printf("ERROR!\n"); return;} for(i=0;p;i++) { printf("No.%d\t%d\n",i+1,p->data); p=p->next; } } void main() { DuLList List; int n; ElemType Min,Max; printf("Please input the number of element:"); scanf("%d",&n); CreateList(List,n); printf("Please input the Minimum number:"); scanf("%d",&Min); printf("Please input the Maximum number:"); scanf("%d",&Max); Function(List,n,Min,Max); ListPrint(List); }
相关文章推荐
- 已知线性表中的元素(整数)以值递增有序排列,并以单链表做存储结构。试写一个程序,删除表中所有大于mink且小于maxk的元素(若表中存在这样的元素)。
- 已知线性表中元素以值递增有序排列,并以单链表作为存储结构,设计一个算法,删除表中值相同的多余元素
- 【数据结构作业一】写出顺序表的结构体类型定义及查找、插入、删除算法,并以顺序表作存储结构,实现线性表的插入、删除
- 数据结构实现以较高的效率实现删除线性表中元素值在x到y(x和y自定)之间的所有元素。
- 数据结构题解: 线性存储 、 链表结构 实现栈功能 --------------进制转换
- 数据结构(严蔚敏)C语言实现---线性表的顺序存储
- 【数据结构作业二】写出单链表结点的结构体类型定义及查找、插入、删除算法,并以单链表作存储结构,实现有序表的合并
- 数据结构:有人设计以下算法用于删除整数顺序表L中所有值在[x,y]范围内的元素,该算法显然不是高效的,请设计一个同样功能的高效算法。
- 线性表(顺序存储)结构与功能的简易实现
- 数据结构之线性表代码实现顺序存储,链式存储,静态链表(选自大话数据结构)
- 【数据结构】顺序线性表的插入、删除、合并实现
- 假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算法将A表和B表归并为一个按元素值递减 有序(即非递增有序,允许表中含有值相同的元素)排列的线性表C,并要求利用原装(即A表和
- [SDUT](2116)数据结构实验之链表一:顺序建立链表 ---链式存储(线性表)
- 数据结构实例<三>(匹配链表所有元素删除后并返回新的链表)入门
- 数据结构之线性表的顺序存储实现(1)
- 数据结构复习——线性表的顺序存储实现
- 数据结构实验1 链表 实现学生信息存储,功能 增删改查,实现 结构类型
- 数据结构——单向链表的顺序存储及实现
- 【1130】数据结构上机测试1:顺序表的应用 (链表的建立于重复元素删除) SDUT
- 假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算法将A表和B表归并为一个按元素值递减 有序(即非递增有序,允许表中含有值相同的元素)排列的线性表C,并要求利用原装(即A表和