文章

18

粉丝

0

获赞

3

访问

11.1k

头像
删除最大最小数 题解:自用笔记(C语言)
P1022 贵州大学机试题
发布于2024年3月2日 20:44
阅读数 707

复习链式结构

采用带头结点的单链表实现,对最大最小值设置一个标记,跳过最大最小值输出,物理意义上不删除

#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...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发