IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 2021-11-13 -> 正文阅读

[数据结构与算法]2021-11-13

设有一个正整数序列组成的有序单链表(按递增有序,且允许
有相等的整数存在),请设计一个用最小的时间和最小空间的算
法实现下列功能:(a) 确定在序列中比正整数 x 大的数有几个(相
同的数只计算一次,如序列{3、5、6、6、8、10、11、13、13、
16、17、20、20}中比 10 大的数有 5 个);(b) 将单链表中比正整
数 x 小的数按递减次序排列;? 将正整数比 x 大的偶数从单链
表中删除。要求:
(1)描述算法的基本设计思想;
(2)根据设计思想,采用 C 或 C++语言描述算法,给出注释; (3)说明你所设计的算法的时间复杂度和空间复杂度。

#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
	int data;
	struct  node* next;
}Node;
void insertlist1(Node* list, int arr[], int n)
{
	Node* hail;
	hail = malloc(sizeof(Node));
	hail = list;
	Node* temp;
	for (int i = 0; i < n; i++)
	{
		temp = malloc(sizeof(Node));
		temp->next = NULL;
		temp->data = arr[i];

		hail->next = temp;
		hail = temp;
	}
	hail->next = NULL;
}
void insertlist2(Node* list, int arr[], int n)
{
	Node* temp;
	for (int i = 0; i < n; i++)
	{
		temp = malloc(sizeof(Node));
		temp->data = arr[i];
		temp->next = NULL;

		temp->next = list->next;
		list->next = temp;
	}
}
void printflist(Node* list)
{
	Node* p;
	p = malloc(sizeof(Node));
	p = list->next;
	while (p)
	{
		printf("%d ", p->data);
		p = p->next;
	}
}
int countx(Node* list, int x)
{
	Node* p;
	p = malloc(sizeof(Node));
	p = list->next;
	int count = 0;
	while (p->data < x)
	{
		p = p->next;
	}
	Node* q;
	q = malloc(sizeof(Node));
	q = p->next;
	Node* qleft;
	Node* qright;
	qleft = malloc(sizeof(Node));
	qright = malloc(sizeof(Node));
	qleft = p;

	while (q)
	{
		qright = q->next;
		if (q->data > x && q->data != qleft->data)
		{
			count++;
		}
		qleft = qleft->next;
		q = qright;
	}
	//printf("%d ", count);
	return count;

}
int deleteeven(Node* list, int x)
{
	Node* p;
	p = malloc(sizeof(Node));
	p = list->next;
	while (p->data < x)
	{
		p = p->next;
	}
	Node* q;
	q = malloc(sizeof(Node));
	q = p->next;
	Node* qleft;
	Node* qright;
	qleft = malloc(sizeof(Node));
	qright = malloc(sizeof(Node));
	qleft = p;
	Node* temp;
	while (q)
	{
		qright = q->next;
		if (q->data % 2 == 0)
		{
			temp = malloc(sizeof(Node));
			temp = q;
			qleft->next = qright;
			q = qright;

			free(temp);
		}
		else
		{
			qleft = qleft->next;
			q = qright;
		}
	}
}
void inverlist(Node* list, int x)
{
	Node* p;
	p = malloc(sizeof(Node));
	p = list->next;
	Node* pre = malloc(sizeof(Node));
	pre = list;
	while (p->data < x)
	{
		pre = pre->next;
		p = p->next;
	}
	Node* r;
	r = malloc(sizeof(Node));
	r = list->next;
	Node* rright;
	rright = malloc(sizeof(Node));
	list->next = NULL;

	while (r != pre)
	{
		rright = r->next;
		r->next = pre->next;
		pre->next = r;
		r = rright;
	}
	list->next = pre;

}
int main()
{
	int arr[13] = { 3,5,6,6,8,10,11,13,13,16,17,20,20 };
	Node* list;
	list = malloc(sizeof(Node));
	list->next = NULL;
	insertlist1(list, arr, 13);
	//insertlist2(list, arr, 13);
	printflist(list);
	printf("\n");

	int count = 0;
	count = countx(list, 10);
	printf("the >x numbers is %d \n", count);


	deleteeven(list, 10);
	printflist(list);
	printf("\n");

	inverlist(list, 10);
	printflist(list);
	printf("\n");
	return 0;
}
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-11-14 21:58:23  更:2021-11-14 22:00:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/9 1:18:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码