数据结构中的线性链表 冒泡排序,感觉快崩溃了~ - OurCoders (我们程序员)

OC

数据结构中的线性链表 冒泡排序,感觉快崩溃了~

sixer 发布于 2013年11月27日 | 更新于 2013年11月28日
无人欣赏。
void linkList_sort_bubble(linkList *l){//线性链表冒泡排序
linkNode *p=(linkNode *)malloc(sizeof(linkNode)),*q,*last=NULL;
p->next=*l;
*l=p;
while((*l)->next!=last)
{
 p=*l;
 q=p->next;
 while(q->next!=last)
 {
 if (p->next->data > q->next->data)
 {//交换
 printf("JKJK\n");
 p->next=q->next;
 q->next=q->next->next;
 p->next->next=q;//这句有问题,加上就不能正常运行,但看上去没问题啊??
 }
 p=p->next;
 q=q->next;
 }
 last=q;
}
*l=(*l)->next;}
共5条回复
sixer 回复于 2013年11月27日
 typedef struct linkNode{//这是我的结构体定义。
int data;
struct linkNode * next;}linkNode,* linkList;
sixer 回复于 2013年11月27日

主要问题就是注释那句,加上就运行不了提示

/bin/bash: line 1: 9135 Segmentation fault: 11 "linklistlink20131127180648" [Finished in 0.4s with exit code 139]

去掉可以正常运行,但运行结果肯定又不对了,太奇怪了!

decimalbell 回复于 2013年11月28日

。。。没看出while死循环了吗

sixer 回复于 2013年11月28日

3楼 @decimalbell 检查了一下,两个while都没有死循环啊。

saiyagg 回复于 2013年11月28日

@sixer

看了你的程序,我有以下部分不是很明白:

  • 程序中是用一个指向 linkNode 的指针来表示链表结束么,最后一个 node 的 next 设置为 NULL就可以了呀。
  • 外层循环用 l->last 来做条件判断,但 l 的修改是在此循环外部做的。对于这一点,@sixer 确定这个有没有问题。
登录 或者 注册
发布新帖
相关帖子
相关新闻
最新帖子

AltStyle によって変換されたページ (->オリジナル) /