单向链表快速排序算法C语言,用C++写出按正位序建立一个单链表的算法

满意答案

00e27ab806e4881f8254fe7ae8741834.png

cyl0319

2013.10.15

00e27ab806e4881f8254fe7ae8741834.png

采纳率:57%    等级:8

已帮助:62人

#include

using namespace std;

typedef char ElemType;

typedef struct LNode

{

ElemType data;

LNode *next;

}LinkList;

void InitList(LinkList *&L)//初始化线性表

{

L=new LinkList;

L->next=NULL;

}

void DestroyList(LinkList *&L)//销毁线性表

{

LinkList *p=L,*q=p->next;

while(q!=NULL)

{

delete p;

p=q;

q=p->next;

}

delete p;

}

int ListEmpty(LinkList *L)//判断线性表是否为空表

{

return(L->next==L);

}

int ListLength(LinkList *L)//求线性表的长度

{

LinkList *p=L;

int n=0;

while(p->next !=NULL)

{

n++;

p=p->next;

}

return n;

}

void DispList(LinkList *L)//输出线性表

{

LinkList *p=L->next;

while(p!=NULL)

{

cout<data<

p=p->next;

}

cout<

}

int GetElem(LinkList *L,int i,ElemType &e)//求线性表中某个数据元素的值

{

LinkList *p=L;

int j=0;

while(p!=NULL && j

{

j++;

p=p->next;

}

if(p==NULL)

return 0;

else

{

e=p->data;

return 1;

}

}

int LocateElem(LinkList *L,ElemType e)//按元素值查找

{

LinkList *p=L->next;

int i=1;

while(p!=NULL && p->data!=e)

{

i++;

p=p->next;

}

if(p==NULL)

return 0;

else

return i;

}

int ListInsert(LinkList *&L,int i,ElemType e)//插入数据元素

{

LinkList *p=L,*s;

int j=0;

while(j

{

p=p->next;

j++;

}

if(p==NULL)

return 0;

else

{

s=new LinkList;

s->data=e;

s->next=p->next;

p->next=s;

return 1;

}

}

int ListDelete(LinkList *&L,int i,ElemType &e)//删除数据元素

{

LinkList *p=L,*q;

int j=0;

while(p!=NULL && j

{

j++;

p=p->next;

}

if(p==NULL)

return 0;

else

{

q=p->next;

if(q==NULL)

return 0;

e=q->data;

p->next=q->next;

delete q;

return 1;

}

}

void main()

{

LinkList *h;

ElemType e;

cout<

InitList(h);

cout<

ListInsert(h,1,'a');

ListInsert(h,2,'b');

ListInsert(h,3,'c');

ListInsert(h,4,'d');

ListInsert(h,5,'e');

cout<

DispList(h);

cout<

cout<

if(ListEmpty(h))

cout<

else

cout<

GetElem(h,3,e);

cout<

cout<

cout<

ListInsert(h,4,'f');

cout<

DispList(h);

cout<

ListDelete(h,3,e);

cout<

cout<

DispList(h);

cout<

DestroyList(h);

}

00分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值