一、删除所有指定值的结点
核心代码check_tt()函数:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int a[20], n;
typedef struct LNode {
int data;
struct LNode *next;
}LNode, *LinkList;
void insert(LinkList &t, int len, int d[]) {
LNode* r = t;
for(int i = 0; i < len; i ++) {
LNode* p = (LNode*)malloc(sizeof(LNode));
p -> data = d[i];
r -> next = p;
r = p;
}
}
void print_tt(LinkList &t) {
for(LNode* p = t; p -> next != NULL; p = p->next) {
if(p -> next -> data < -100 || p-> next -> data > 100) break;
printf("%d\n", p->next->data);
}
}
void check_tt(LinkList &t, int val) {
for(LNode *p = t; p -> next != NULL;) {
if(p -> next -> data < -100 || p-> next -> data > 100) break;
if(p -> next -> data == val) {
LNode* q = p -> next;
p -> next = p -> next -> next;
free(q);
} else {
p = p -> next;
}
}
}
int main(){
LinkList L = (LNode*)malloc(sizeof(LNode));
scanf("%d", &n);
for(int i = 0; i < n; i ++) {
int da; scanf("%d", &da);
a[i] = da;
}
insert(L, n, a);
check_tt(L, 6);
print_tt(L);
return 0;
}
二、删除最小结点
核心代码check_tt()函数:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int a[20], n;
typedef struct LNode {
int data;
struct LNode *next;
}LNode, *LinkList;
void insert(LinkList &t, int len, int d[]) {
LNode* r = t;
for(int i = 0; i < len; i ++) {
LNode* p = (LNode*)malloc(sizeof(LNode));
p -> data = d[i];
r -> next = p;
r = p;
}
}
void print_tt(LinkList &t) {
for(LNode* p = t; p -> next != NULL; p = p->next) {
if(p -> next -> data < -100 || p-> next -> data > 100) break;
printf("%d\n", p->next->data);
}
}
LNode* check_tt(LinkList &t) {
LNode* pre = t;
for(LNode* p = t; p -> next != NULL; p = p -> next) {
if(p -> next -> data < -100 || p-> next -> data > 100) break;
if(p -> next -> data < pre -> next -> data) {
pre = p;
}
}
return pre;
}
int main(){
LinkList L = (LNode*)malloc(sizeof(LNode));
scanf("%d", &n);
for(int i = 0; i < n; i ++) {
int da; scanf("%d", &da);
a[i] = da;
}
insert(L, n, a);
LNode *pp = check_tt(L);
pp -> next = pp ->next -> next;
print_tt(L);
return 0;
}