当前位置: 首页 > 工具软件 > Mink > 使用案例 >

C语言:删除有序链表大于mink小于maxk的数

柴兴贤
2023-12-01

将链表变成有序链表并定义mink和maxk,删除大于mink和小于maxk的数据,mink和maxk可不与链表数据相同。


//代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define MAXSIZE 10
#define OK 1
#define ERROR 0
#define T 1
#define F -1

typedef int Status;

typedef struct Dlist {
	int data;
	struct Dlist* next;
}Dlist, * Zdlist;

//创建
Status Cj_List(Zdlist& L) {
	L = (Zdlist)malloc(sizeof(int));
	if (L) {
		L->next = NULL;
		printf("创建成功!\n");
		return OK;
	}
	printf("创建失败!\a\n");
	return ERROR;
}

//插入
Status Cr_List(Zdlist& L, int i, int e) {
	Zdlist p, s;
	p = L;
	int j = 0;                          //判断是否有头结点,无头节点则创建失败。
	while (p && (j < i - 1)) {
		p = p->next;
		++j;
	}
	if (!p || j > i - 1) {
		printf("插入失败!\a\n");
		return ERROR;
	}
	s = (Zdlist)malloc(sizeof(int));//插入时先新建头结点
	s->next = NULL;                 //定义p=L用p代替L进行指针遍历,防止丢失头结点
	s->data = e;
	s->next = p->next;
	p->next = s;
	printf("插入成功!\n");
	return OK;

}

//输出
Status Sc_List(Zdlist L) {
	Zdlist p = L;
	int sum = 0;
	if (!p->next) {
		printf("链表为空!\a\n");
		return ERROR;
	}
	printf("全部学生数据:\n");
	while (p->next != NULL) {
		p = p->next;
		sum++;      //输出总人数
		printf("%3d", p->data);
	}
	return OK;
}

//冒泡排序
void Px_List(Zdlist &L,int n) {
	Zdlist p = L->next;
	int temp;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < (n-1) - i;j++) {
			if ((p->data) > (p->next->data)) {
				temp = p->data;
				p->data = p->next->data;
				p->next->data = temp;
				p = p->next;
			}
			else {
				p = p->next;
			}
		}
		p = L->next;
	}
}

//删除大于mink切小于maxk的数据
void Sia_List(Zdlist &L) {
	Zdlist p = L;
	int mink, maxk;
	printf("输入范围:mink maxk \n");
	scanf("%d %d", &mink, &maxk);
	while (p->next != NULL) {
		if (p->next->data > mink && p->next->data < maxk) {
			p->next = p->next->next;
		}
		else {
			p = p->next;
		}
	}
}

//主函数
int main() {
	Zdlist L;
	int e;
	int choose;
	int i, n = 10;
	int sum = n;
	Cj_List(L);
	while (n > 0) {
		printf("位置 数据:\n");
		scanf("%d %d", &i,&e);
		Cr_List(L, i, e);
		n--;
	}
	Sc_List(L);
	printf("\n");
	Px_List(L,sum);
	Sc_List(L);
	printf("\n");
	Sia_List(L);
	Sc_List(L);
	printf("\n");
	return 0;
}

 类似资料: