社区
数据结构与算法
帖子详情
请教两个问题????
drmao
2003-12-15 10:11:15
1.有一无序的顺序表可能有一个或一个以上的重复元素,要求用一个效率较高的算法删除所有的重复元素(即有重复就只留一个)
2.用C语言实现一个双端队列的基本算法。
...全文
14
4
打赏
收藏
请教两个问题????
1.有一无序的顺序表可能有一个或一个以上的重复元素,要求用一个效率较高的算法删除所有的重复元素(即有重复就只留一个) 2.用C语言实现一个双端队列的基本算法。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
blueclu0281
2003-12-15
打赏
举报
回复
1
用扫描的办法可以吗?
2
是双向队列吗?
短歌如风
2003-12-15
打赏
举报
回复
1:先排序,然后去重复,时间复杂度为O(N*logN)——当选择O(N*logN)的排序算法时——或O(N)——当选择O(N)的排序算法时。
如果要求去重复后顺序不变,可以用一个BST或Hash实现的集合,如果元素不在集合中则删除,否则加入到集合。时间复杂度为O(N)*(O(Insert)+O(Find))
2:
可能有错误,自己改一下:
typedef int element_t;
#define COUNTPERNODE 64
typedef struct _node
{
struct _node* prev, *next;
element_t elem[COUNTPERNODE];
} node_t, *node_ptr_t;
typedef struct _queue
{
node_ptr_t first, last;
int first_index, last_index;
} queue_t, *queue_ptr_t;
int queue_isempty(queue_ptr_t queue)
{
assert(queue != NULL);
return = queue->first == NULL;
}
void queue_init(queue_ptr_t queue)
{
assert(queue != NULL);
queue->first = queue->last = NULL;
queue->first_index = queue->last_index = 0;
}
void queue_clear(queue_ptr_t queue)
{
assert(queue != NULL);
while(queue->first != NULL)
{
node_ptr_t node;
node = queue->first;
queue->first = node -> next;
free(node);
}
queue_init(queue);
}
void queue_push_back(queue_ptr_t queue, element_t value)
{
assert(queue != NULL);
if(queue->last == NULL)
{
queue->first = queue->last = (node_ptr_t)malloc(sizeof(node_t));
queue->first->prev = queue->first->next = NULL;
}
if (queue->last_index == COUNTPERNODE)
{
node_ptr_t node;
node = (node_ptr_t)malloc(sizeof(node_t));
queue->last ->next = node;
node->prev = queue->last;
node->next = NULL;
queue->last = node;
queue->last_index = 0;
}
queue->last->elem[queue->last_index++] = value;
}
element_t queue_pop_back(queue_ptr_t queue)
{
assert(queue != NULL && !queue_isempty(queue));
element_t result;
if(queue->last_index == 0)
{
node_ptr_t node;
node = queue->last;
queue->last = node->prev;
queue->last->next = NULL;
free(node);
queue->last_index = COUNTPERNODE;
}
result = queue->last->elem[--queue->last_index];
if (queue->last == queue->first && queue->last_index == queue->first_index)
{
free(queue->last);
queue_init(queue);
}
return result;
}
void queue_push_front(queue_ptr_t queue, element_t value)
{
assert(queue != NULL);
if(queue->last == NULL)
{
queue->first = queue->last = (node_ptr_t)malloc(sizeof(node_t));
queue->first->prev = queue->first->next = NULL;
}
if (queue->first_index == 0)
{
node_ptr_t node;
node = (node_ptr_t)malloc(sizeof(node_t));
queue->first ->prev = node;
node->next = queue->first;
node->prev = NULL;
queue->first = node;
queue->first_index = COUNTPERNODE;
}
queue->first->elem[--queue->first_index] = value;
}
element_t queue_pop_front(queue_ptr_t queue)
{
assert(queue != NULL && !queue_isempty(queue));
element_t result;
result = queue->first->elem[queue->first_index++];
if (queue->last == queue->first && queue->last_index == queue->first_index)
{
free(queue->last);
queue_init(queue);
}
else if(queue->first_index == COUNTPERNODE)
{
node_ptr_t node;
node = queue->first;
queue->first = node->next;
queue->first->prev = NULL;
free(node);
queue->first_index = 0;
}
return result;
}
ZeroZZZ000
2003-12-15
打赏
举报
回复
1、应该是先排序或建立索引效率会较高
2、是要数组队列还是链式队列啊?
drmao
2003-12-15
打赏
举报
回复
1。要求用较高的效率执行
typedef struct Sqlist{
ElemType *elem;
int length;
int size;
}SqList;
void DeleteRedundance(SqList *L){int i,j; int k=0;
for(i=0;i<L->length;++i){ k=0;
for(j=i+1;j<L->length;++j){
if(L->elem[j]==L->elem[i])++k;
else L->elem[j-k]=L->elem[j];
} L->length-=k;
}
}
2。是双向队列
Python训练营103期开班典礼直播回放
#《5天Python闯关训练营》学习计划#挑战周期:12月16日—12月20日直播安排:开班典礼:12...完成相应的软件安装及环境搭建学习服务:12.16-12.20日为本课正式服务周期期间遇到学习
问题
可社群
请教
,群内安排助教老师答疑
如何
请教
别人
问题
?
聪明的问法应该是这样:“哦~~~我看过帮助了但是只有-z和-p
两个
参数中提到了zEntry而且还都没有清楚的解释,你是指这
两个
中的哪一个吗?还是我看漏了什么?”。 三思而后问 经典蠢
问题
以下是几个...
向别人
请教
问题
,不要这样开头
我们经常会有
请教
别人
问题
的时候,而下面这几种是不太建议的提问开头 在吗? 能问你一个
问题
吗? 有谁知道xxx吗? 当然你向我提问的时候,也不用称呼为大佬或者大神之类的,我就是一个普通的开发者。...
python多个函数_
请教
:一个类中可以定义多个同名函数?
python认为每个文件是一个module每个函数的的作用域...
两个
def get_activations都在同一个文件下,一个在类里面,另一个在类外。再
请教
一下,这个类外的函数是不是只能在这个文件中被调用?其它文件就不能调用了?c...
路由跟踪为什么会有
两个
局域网?
刚开始学习网络,用Best Trace做了一下路由跟踪,看了这个结果不是很明白,有几个
问题
想
请教
一下大家,非常感谢各位大神。 1.为什么第1个记录的ip是公网ip, 后面却标示着‘局域网’,这个是和教育网有关吗? 2.第4...
数据结构与算法
33,008
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章