永发信息网

单链表冒泡法排序 问题在哪?

答案:3  悬赏:10  手机版
解决时间 2021-03-11 00:01
  • 提问者网友:一抹荒凉废墟
  • 2021-03-10 16:25
void paixu(LinkList *&L)
{
LinkList *s,*q=L->next,*p,*w;
w=(LinkList *)malloc(sizeof(LinkList));
for(s=q;q->next!=NULL;q=q->next)
for(p=q->next;p->next!=NULL;p=p->next)
{if(p->data<q->data)
{w->data=p->data;
p->data=q->data;
q->data=w->data;
}
}

}
最佳答案
  • 五星知识达人网友:梦中风几里
  • 2021-03-10 17:31
#include<stdio.h>
#include <stdlib.h>
#include<iostream.h>
struct node {
int data;
struct node *next;
}node;

typedef struct node *LinkList;
typedef int Status;
typedef int ElemType;
/////////////////////////
#define OK 0
#define ERROR -1
////////////////////
int main()
{
void paixu(LinkList &L);
LinkList createllist(int *array,int len);
void printfllist(LinkList ptr);
int llist1[6] = {78,22,56,46,5,6};
LinkList ptr1;
ptr1 = createllist(llist1,6);
paixu(ptr1);
printfllist(ptr1);

return 0;
}
void paixu(LinkList &L)
{
LinkList s,q,p,w;
q=L;
w=(LinkList)malloc(sizeof(LinkList));
for(s=q;q->next!=NULL;q=q->next)
for(p=q->next;p!=NULL;p=p->next)
{if(p->data<q->data)
{w->data=p->data;
p->data=q->data;
q->data=w->data;
}
}

}
///////////////////////
LinkList createllist(int *array,int len) {
LinkList head;
LinkList ptr,ptr1;
int i;
head = (LinkList)malloc(sizeof(node));
if(!head) return NULL;
head->data = array[0];
head->next = NULL;
ptr = head;
for(i = 1;i < len;i++) {
ptr1 = (LinkList)malloc(sizeof(node));
if(!ptr1) return NULL;
ptr1->data= array[i];
ptr->next = ptr1;
ptr = ptr1;
}
ptr->next = NULL;
return head;
}
/////////////////////////////////////////////
void printfllist(LinkList ptr) {
while(ptr != NULL) {
printf("%d ",ptr->data);
ptr = ptr->next;
}
printf("\n");
}
///////////////////////////////////////////
全部回答
  • 1楼网友:归鹤鸣
  • 2021-03-10 19:12
先检验id的大小,如果小的在后面的话,就将两结点的所有数据交换,达到排序的目的,以下是代码: struct linklist *sort(struct linklist *head) { struct linklinst *p1,*p2; int i,j; int tel0,id0; char string[10]; for(i=0;i0;j--) while(p1->next!=null) { p2=p1;p1=p1->next; if(p2->idid) { tel0=p1->tel; p1->tel=p2->tel; p2->tel=tel0; strcpy(string,p1->name); strcpy(p1->name,p2->name); strcpy(p2->name,string); id0=p1->id; p1->id=p2->id; p2->id=id0; } } } return(head);
  • 2楼网友:十年萤火照君眠
  • 2021-03-10 18:11
冒泡排序的算法用在链表中应该表现为交换俩结点,而不是数据...如果只交换数据的话,也没有没要在申请一个结点,只需再以一个变量就可以。。。你在看看冒泡得算发思想。。。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯