希望学长的代码能给大二西电er们带来帮助(大家一定要好好学习数据结构,合理利用资源)
大家找到了什么bug或有什么改进意见可以私信我或在下方留言,我都会看的
不多说废话直接上代码
#include<iostream>
#include<malloc.h>
#include<stdio.h>
#include<vector>
using namespace std;
//单链表结构类型定义
typedef int datatype;
vector<int>v;
typedef struct node
{
datatype data;
struct node* next;
}linklist;
linklist* create() {
v.clear();
cout << "输入递增数列 -1结束\n";
int x;
while (cin >> x, x != -1)v.push_back(x);
linklist* head = new node();
head->next = NULL;
head->data = -0x3f3f3f3f;
for (int i = v.size() - 1; ~i; i--) {
linklist* nw = new node();
nw->next = head->next;
nw->data = v[i];
head->next = nw;
}
return head;
}
void print(linklist* head) {
node* p = head->next;
while (p) {
cout << p->data << " ";
p = p->next;
}
puts("");
}
void _delete(linklist* head, datatype mn, datatype mx) {
node* p = head;
while (1) {
if (p == NULL)return;
if (p->next && p->next->data > mn && p->next->data < mx) {
node* q = p->next;
while (q && q->data > mn && q->data < mx) {
q = q->next;
}
p->next = q;
return;
}
p = p->next;
}
}
int main()
{
linklist* head;
int min, max;
head = create();
printf("原链表为:\n");
print(head);
puts("***************请 为 min 输入一个整数******************");
scanf("%d", &min);
puts("***************请 为 max 输入一个整数******************");
scanf("%d", &max);
_delete(head, min, max);//调用单链表删除函数
printf("***********删除介于 min 和 max 之间的结点后的链表*********\n");
print(head);
return 0;
}