社区
数据结构与算法
帖子详情
请教两个问题????
drmao
2003-12-15 10:11:15
1.有一无序的顺序表可能有一个或一个以上的重复元素,要求用一个效率较高的算法删除所有的重复元素(即有重复就只留一个)
2.用C语言实现一个双端队列的基本算法。
...全文
22
4
打赏
收藏
请教两个问题????
1.有一无序的顺序表可能有一个或一个以上的重复元素,要求用一个效率较高的算法删除所有的重复元素(即有重复就只留一个) 2.用C语言实现一个双端队列的基本算法。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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。是双向队列
【职场沟通】如何向上级
请教
问题
?
这就让我们首先必须摆出一个人入职公司,你的岗位和薪酬其实与公司是契约关系,如果不能提供出岗位结果,一定意义上是不合格的,上级岗位有他自己的工作职能与结果要求,这是我们必须明白的,所以我们不要经常出现
问题
自己不想首先领导,还有有的上级把下级的工作干完了,这种情况就可以考虑减去一个层级;很多人向上进行了一轮沟通后,电梯里问到你这个事情况怎么样,支支吾吾,说不清楚,这会让上级感觉到你是否能胜任这个岗位,业务能力也大打折扣,2-3次后你的沟通就会让上级确定是无效沟通。
问题
1:这是我的演讲稿,您帮我看看?
如何
请教
别人
问题
?
提问的智慧。
向别人
请教
问题
,不要这样开头
前言 我们经常会有
请教
别人
问题
的时候,而下面这几种是不太建议的提问开头 在吗? 能问你一个
问题
吗? 有谁知道xxx吗? 当然你向我提问的时候,也不用称呼为大佬或者大神之类的,我就是一个普通的开发者。 为什么 毋庸置疑,你提问的目的自然是想得到解答,而上面三种提问方式都有一个共性,就是在看到上面的
问题
之后,仍然不知道具体
问题
是什么,而要简单回复之后才能得到真...
路由跟踪为什么会有
两个
局域网?
问: 刚开始学习网络,用Best Trace做了一下路由跟踪,看了这个结果不是很明白,有几个
问题
想
请教
一下大家,非常感谢各位大神。 1.为什么第1个记录的ip是公网ip, 后面却标示着‘局域网’,这个是和教育网有关吗? 2.第4个记录为什么又多出一个局域网,教育网也是公网ip, 为什么不直接连广州电信,是因为教育网转入公网的原因吗? 3.第10个记录的4个‘*’符号分别是什么意思,是得...
职场上该如何有效地向师傅
请教
问题
?
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡不讲技术,跟大家随便唠唠嗑。痞子衡嵌入式是痞子衡维护近三年的嵌入式方向公众号,目前已累计原创140余篇,其中仅三五篇文章是非技术相关的,...
数据结构与算法
33,027
社区成员
35,335
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章