社区
数据结构与算法
帖子详情
单链表作为存储结构,实现简单选择排序
cclighting
2006-11-16 06:53:58
以单链表作为存储结构,实现简单选择排序,然后进行如下操作:
(1)若表中存在值为x的节点,则将它从表中删除;
(2)若表中不存在值为x的节点,就将x插入表中,并保持链表仍然有序;
我妹妹的作业题,大家帮个忙。
...全文
1858
3
打赏
收藏
单链表作为存储结构,实现简单选择排序
以单链表作为存储结构,实现简单选择排序,然后进行如下操作: (1)若表中存在值为x的节点,则将它从表中删除; (2)若表中不存在值为x的节点,就将x插入表中,并保持链表仍然有序; 我妹妹的作业题,大家帮个忙。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
小青辣椒
2006-11-18
打赏
举报
回复
1.下面是链表的删除模板函数
操作-Delete
template<class T>
LinearList<T>& LinearList<T>::Delete(int k,T& x)
{//把第k个元素放入x中,然后删除第k个元素
//如果不存在第k个元素,则引发异常OutOfBounds
if(Find(k,x)){//把元素k+l,...向前移动一个位置
for(int i=k;i<length;i++)
element[i-l]=element[i];
length--;
主要的就是这个,然后自己组织一下就可以了
return *this;
}
else throwOutOfBounds(); }
2.下面是链表的插入函数
操作-Insert
template<class T>
LinearList<T>& LinearList<T>::Insert(int k,const T& x)
{ //在第k个元素之后插入x
//如果不存在第k个元素,则引发异常OutOfBounds
//如果表已经满,则引发异常NoMem
if(k<0||k>length) throw OutOfBounds();
if(length==MaxSize) throw NoMem();
//向后移动一个位置
for(int i=length-1;i>=k;i--)
element[i+l]=element[i];
element[k]=x;
length++;
return *this; }
peng14331
2006-11-18
打赏
举报
回复
#include <iostream>
using namespace std;
struct linkcode{ //定义结构体
int data;
struct linkcode *next;
};
void swap(linkcode *a,linkcode *b)//交换内容
{
int temp=a->data;
a->data=b->data;
b->data=temp;
}
linkcode * SortLink(linkcode * head)
{
if(head==NULL) return NULL;
linkcode *p=head,*temp=head,*biaozhi=head;
int n=0;//链表长度
while(p) {n++;p=p->next;}
for(int i=1;i<n;i++)//n次选择
{
temp=biaozhi;p=biaozhi;
while(p)
{
if(p->data<temp->data) temp=p;
p=p->next;
}
swap(biaozhi,temp);
biaozhi=biaozhi->next;
}
return head;
}
//以下为举例应用
void main()
{
//建立一个链表,带表头的
linkcode *linkhead=(linkcode *)malloc(sizeof(linkcode)*1);
linkhead->data=0;
linkhead->next=NULL;
linkcode *x=linkhead;
for(int i=0;i<10;i++)
{
linkcode *eg=(linkcode *)malloc(sizeof(linkcode)*1);
eg->data=20-i;
eg->next=NULL;
x->next=eg;
x=x->next;
}
x->next=NULL;
linkcode *y=linkhead;
while(linkhead)//输出链表,为一个倒序的
{ cout<<linkhead->data<<endl;
linkhead=linkhead->next;
}
linkhead=SortLink(y);//调用排序
while(linkhead)//输出排序后的链表
{ cout<<linkhead->data<<endl;
linkhead=linkhead->next;
}
}
写了个选择排序的实现,至于插入、删除对于排好序的链表来说很简单了。
写的不好。
LiChenYue
2006-11-16
打赏
举报
回复
(1)若表中存在值为x的节点,则将它从表中删除;
比较,删除,容易的对吧,
(2)若表中不存在值为x的节点,就将x插入表中,并保持链表仍然有序;
在一趟扫描之后,如果要插入的话,就再扫一遍,冒泡到要插的地方,插就好了。
单链表
上的
简单选择排序
算法
以
单链表
为
存储结构
实现
简单选择排序
的算法
单链表
做
存储结构
的直接插入排序
单链表
做
存储结构
的直接插入排序
数据结构实战完全手册
不同于其他课程,本课程从
单链表
出发,手把手的全代码
实现
了栈与队列,树、图(包括数组和链表的两种形式),并对这些经典结构的应用也做了代码级的
实现
,覆盖了经典数据结构的全部内容. 课程参考教材:周幸妮教授的...
单链表
为
存储结构
,
实现
二路归并排序的算法
以
单链表
为
存储结构
,
实现
二路归并排序的算法, 要求链表不另外占用存储空间, 排序过程中不移动结点中的元素, 只改各链结点中的指针
单链表
存储结构
简单选择排序
.pdf
单链表
存储结构
简单选择排序
.pdf
数据结构与算法
33,008
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章