美团编程

xiaoxiao2021-02-28  7

实现一个动态数组类,功能包括在位置 N 增加一个数据,在位置 N 删除一个数据,获取第 N 大的数据,获取第 N 小的数据,获取数组的第 N 个数据,其中, N 取任意值。

#include <iostream> #include <stdio.h> #include <algorithm> struct my_list { my_list *next; int value; my_list() { next = NULL; value = 0; } }; class dynamic { my_list *head; int arr[10000]; void add_a_number(int n,int value)//在位置 n 添加一个数据,从 0 开始 { int cal = 0;//计数 my_list *it = new my_list; my_list *des = new my_list; des->value = value; my_list *_next = new my_list; for(it=head;cal<n;cal++)//it为代插入位置的上一个节点 it = it->next; _next = it->next; if(_next == NULL)//插入到末尾 it->next = des; else//在中间插入 { it->next = des; des->next = _next; } } void delete_a_number(int n)//在位置 n 删除一个数据 { int cal = 0;//计数 my_list *it = new my_list; my_list *des = new my_list; for(it=head;cal<n;cal++)//it为代插入位置的上一个节点 it = it->next; des = it->next;//待删除位置 if(des == NULL) printf("error:wrong index\n"); else if(des->next == NULL) { delete(des); it->next = NULL; } else { it->next = des->next; delete(des); } } int get_nth_min(int n)//获取第 n 小的数据,从 0 开始 { int cal = 0;//计数 my_list *it = new my_list; it = head; while(it->next)//存放到数组里 { arr[cal++] = it->next->value; it = it->next; } std::sort(arr,arr+n); return arr[n-1]; } int get_nth_number(int n)//获取第 n 个数据,从 0 开始 { int cal = 0;//计数 my_list *it = new my_list; it = head; while(cal<n)//遍历链表 { cal++; it = it->next; } return it->next->value; } };
转载请注明原文地址: https://www.6miu.com/read-750114.html

最新回复(0)