(郝斌)链表排序,附上郝斌数据结构全部完整程序

1.链表排序

与数组排序作比较,比较占内存,可以用while循环实现

q=p->pNext;

int t;

while(NULL!=p->pNext)

{

if(p->data > q->data)

{

t=p->data;

q->data=p->data;

q->data=t;

p=p->pNext;

q=q->pNext;

}

}

选择排序法(与数组排序作比较)

void sort_list(PNODE pHead)
{
int i,j,t;
PNODE p,q;
len=int len_list(pHead);

/*数组选择排序
//for(i=0;i<len-1;++i)
//{ for(j=i+1;j<len;++j)
  //{
   //if(a[i]>a[j])
   //{ t=a[i];
     //a[i]=a[j];
     //a[j]=t;
   //} 
  //}
//}
//}
*/

for(i=0,p=pHead->pNext;i<len-1;++i,p=p->pNext)//从第一个有效数字开始,注意++i要更改链表指针
{ for(j=i+1,q=p->pNext;j<len;++j,q=q->pNext)//内循环同上
  {
   if(p->data>q->data)
   { t=p->data;
     p->data=q->data;
     q->data=t;
   } 
  }
}
}

主函数

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>

typedef struct Node
{
int data;//
struct Node* pNext//
}NODE,*PNODE;

//
PNODE creat_list(void);
void traverse_list(PNODE pNode);
bool is_empty(PNODE pHead);
int lenth_list(PNODE);
bool insert_list(PNODE,int,int);
bool delete_list(PNODE,int,int*);
void sort_list(PNODE);

int main(void)
{
PNODE pHead=NULL;
pHead=creat_list();
traverse_list(pHead);
int len=lenth_list(pHead);
printf("链表长度为:%d\n",len);

if(is_empty(pHead)
printf(链表为空!\n");
else
printf("链表不为空!\n");

sort_list(pHead);
traverse_list(pHead);
if(delete_list(pHead,4,&val))
{
printf("删除的链表元素为:%d\n",val);
}
else
{
printf("删除失败\n");
}

return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值