一个大学生的求助!

sidanyang 2004-06-09 05:31:11
大家一看也知道是我课程设计的题目!我已经努力做了,他要用到大三的知道,可我才大二,对我来说点困难,程序有一些我目前修改不了的错误,请高手指教!~~
以链表为基类完成链表的排序
设计内容:
1、建立一个链表类
2、包括对链表的创建、删除、插入、遍利等操作
3、以此为基类创建一个可以把两个链表归并的链表排序的类
4、此类插入新节点时能按排序规律插入相应位置
5、程序要尽可能的优化
6、按要求写出课程设计报告
分不是问题!~~~
邮箱:sdy888888@163.com
...全文
242 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
一生有爱1980 2004-07-20
  • 打赏
  • 举报
回复
从上到下,先发现了这个L.list=0;这个错了L.list是指针赋值为0等于没初始化
shahu4593 2004-06-25
  • 打赏
  • 举报
回复
我靠,我大一就会写只个了
klbt 2004-06-13
  • 打赏
  • 举报
回复
帮你up
sidanyang 2004-06-09
  • 打赏
  • 举报
回复
typedef int ElemType; //定义ElemType为int类型
struct LinearList
{
ElemType *list; //存线性表元素
int size; //存线性表长度
int Maxsize; //存list数组长度
public:
void InitList (LinearList&L,int ms);
void Clearlist(LinearList&L);
bool ListEmpey(LinearList&L);
bool ListFull(LinearList&L);
void TraverList(LinearList&L);
bool FindList(LinearList&L,ElemType&item);
bool UpdataList(LinearList&L,const ElemType&item);
bool InsertList(LinearList&L,const ElemType&item,int mark);
bool DeleteList(LinearList&L,ElemType&item,int mark);
void OrderOutputlist(LinearList&L,int mark);
};
#include<iomanip.h>
#include<stdlib.h>
void InitList(LinearList&L,int ms) //初始化线性表
{
L.list=new ElemType[ms];
if(!L.list)
{
cerr<<"Memory allocation failure!"<<endl;
exit(1);
}
L.list=0;
L.Maxsize=ms;
}
void ClearList(LinearList&L) //清空线性表
{
L.size=0;
}
bool ListEmpty(LinearList&L) //检查线性表是否为空
{
return L.size==0;
}
bool ListFull(LinearList&L) //检查线性表是否为满
{
return L.size==L.Maxsize;
}
void TraverList(LinearList&L) //遍历线性表
{
for (int i=0;i<L.size;i++) cout<<L.list[i];
cout<<endl;
}
bool FindList(LinearList&L,ElemType&item) //从线性表中查找元素
{
for (int i=0;i<L.size;i++)
if (L.list[i]==item)
{
item=L.list[i];
return true;
}
return false;
}
bool UpdataList(LinearList&L,const ElemType&item)//更新线性表中的给定元素
{
for (int i=0;i<L.size;i++)
if (L.list[i]==item)
{
L.list[i]=item;
return true;
}
return false;
}
bool InsertList(LinearList&L,const ElemType&item,int mark)//向线性表的表头,表尾或合适位置插入元素
{
int i;
if (ListFull(L)) return false;
if (mark>0) //向表头插入元素
{
for ( i=L.size-1;i>=0;i--)
L.list[i-1]=L.list[i];
L.list[0]=item;
}
else //向表尾插入元素
if (mark<0)L.list[L.size]=item;
else //有序插入元素
for( i=0;i<L.size;i++)
if (item<L.list[i]) break;
for (int j=L.size-1;j>=i;j--)
L.list[j+1]=L.list[j];
L.list[i]=item;

L.size++;
return true;
}
bool DeleteList (LinearList&L,ElemType&item,int mark)//从线性表中删除表头,表尾或等于给定值的元素
{
if (ListEmpty(L)) return false;
if (mark>0) { //删除表头元素
item=L.list[0];
for (int i=1;i<L.size;i++)
L.list[i-1]=L.list[i];
}
else //删除表尾元素
if (mark<0) item=L.list[L.size-1];
else { //删除值为item的元素
for (int i=0;i<L.size;i++)
if (L.list[i]==item) break;
if (i>=L.size)
return false;
else item=L.list[i];
for (int j=i+1;j<L.size;j++)
L.list[j-1]=L.list[j];
}
L.size--;
return true;
}
void OrderOutputList (LinearList&L,int mark)//对线性表按升序或降序输出
{
int *b=new int[L.size];
int i,k;
for (i=0;i<L.size;i++) b[i]=i;
for (i=1;i<L.size;i++)
{
k=i-1;
for (int j=i;j<L.size;j++)
{
if (mark==1 && L.list[b[j]]<L.list[b[k]]) k=j;
if (mark!=1 && L.list[b[k]]<L.list[b[j]]) k=j;
}
if (k!=i-1) {int x=b[i-1];b[i-1]=b[k];b[k]=x;}
}
for (i=0;i<L.size;i++)
cout<<L.list[b[i]]<<' ';
cout<<endl;
}
#include<iomanip.h>
const int ML=10;
void main()
{

LinearList a;
InitList(a,ML);
int i;
ElemType x;
cout<<"从键盘输入5个数:"; //依次向线性表a表尾插入5个元素
for (i=0;i<5;i++)
{
cin>>x;
InsertList (a,x,1);
}
cout<<"从键盘输入2个数:"; //依次向线性表a表头插入2个元素
cin>>x; InsertList (a,x,1);
cin>>x; InsertList (a,x,1);
//TraverList(a); //按不同次序输出线性表a
OrderOutputList(a,1);
OrderOutputList(a,0);
LinearList b; //把线性表a中的所有元素依次有序插入到一个新线性表b中
InitList (b,ML);
for (i=0;i<a.size;i++)
InsertList(b,a.list[i],0);
TraverList (b); //输出线性表b
if (DeleteList(a,x,1)); //从线性表a中分别删除表头,表尾,给定值元素
else cout<<"Delete fail!";
if (DeleteList (a,x,-1));
else cout<<"Delete fail!";
cout<<"从键盘输入一个待删除的整数:";
cin>>x;
if (DeleteList(a,x,0)) cout<<"Delete success!";
else cout<<"Delete fail!";
OrderOutputList(a,1); //输出线性表a
}

1,160

社区成员

发帖
与我相关
我的任务
社区描述
在CSDN学院遇到的问题反馈及对学院的改进建议等。
社区管理员
  • 软件培训社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧