文章
18
粉丝
0
获赞
3
访问
11.1k
复习链式结构
采用带头结点的单链表实现,对最大最小值设置一个标记,跳过最大最小值输出,物理意义上不删除
#include<stdio.h>
#include<stdlib.h>
typedef struct Node {
int index;//设置标记
int data;
struct Node* next;
}node;
void init(node* head, int n) {//采用尾插法建立链表
node* p = head;
for (int i = 0; i < n; i++) {
node* q = (node*)malloc(sizeof(node));
scanf("%d", &q->data);
q->index = 0;
q->next = p->next;
p->next = q;
p = p->next;
}
}
void delete(node* head) {
node* p = head->next;
node* min = p, * max = p;//存储最大最小值的地址
while(p != NULL){
if (min->data >= p->data)
min = p;
p = p->next;
}
min->index = 1;//设置标记
p = head->next;
while (p != NULL) {
if (max->data <= p->data)
if(p->index!=1)//考虑到最大最小值为同一个值
max = p;
p = p->next;
}
max->index = 1;//设置标记
}
void print(node* head) {
node* p = head->next;
while (p != NULL) {
if (p->index == 0) {//根据标记跳过最大最小值
printf("%d", p...
登录后发布评论
暂无评论,来抢沙发