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;
}
}
}
单链表冒泡法排序 问题在哪?
答案:3 悬赏:10 手机版
解决时间 2021-03-11 00:01
- 提问者网友:一抹荒凉废墟
- 2021-03-10 16:25
最佳答案
- 五星知识达人网友:梦中风几里
- 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");
}
///////////////////////////////////////////
#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
冒泡排序的算法用在链表中应该表现为交换俩结点,而不是数据...如果只交换数据的话,也没有没要在申请一个结点,只需再以一个变量就可以。。。你在看看冒泡得算发思想。。。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯