c語言 單向連結串列如何排序,C語言 單向連結串列如何排序?

時間 2021-09-05 11:59:54

1樓:問明

void link_order(stu *p_head)stu *pb, *pf, temp;

pf = p_head;

if(p_head == null) {//連結串列為空printf("needn't order.\n");

return ;

if(p_head->next == null) {//連結串列有1個節點

printf("only one print, needn't order.\n");

return ;

while(pf->next != null) {//以pf指向的節點為基準節點

pb = pf->next;//pb從基準點的下一個節點開始while(pb != null) {

if(pf->num > pb->num) {temp = *pf;

*pf = *pb;

*pb = temp;

temp.next = pf->next;

pf->next = pb->next;

pb->next = temp.next;

pb = pb->next;

pf = pf->next;

return ;

2樓:碧海風雲

可以用氣泡排序對連結串列進行排序操作。以下補充了sort函式,以及補充了程式完整執行所需的其他內容

#include

#include

typedef struct _item  item;

typedef struct _node  node, *list;

void initlist (list *l)

/*可以採用氣泡排序方法對連結串列進行排序*/

void sort(list l) }}

for (p=l->next; p!=null; p=p->next)

puts (p->item.name);

}int listinsertnode (list l, int i, struct _item *e)

if (!p || j>i-1) /* 插入位置不合理:i小於1或者大於表長 */

return 0;

/* 生成新結點,並插入l中 */

s = (list) malloc (sizeof (struct _node));

s->item = *e;

s->next = p->next;

p->next = s;

return 1;

}int main (void) ;

struct _item b = ;

struct _item c = ;

struct _item d = ;

list p;

initlist (&l);

listinsertnode (l, 1, &a);

listinsertnode (l, 1, &b);

listinsertnode (l, 1, &c);

listinsertnode (l, 1, &d);

puts ("排序前連結串列:");

for (p=l->next; p!=null; p=p->next)

puts (p->item.name);

putchar ('\n');

puts ("排序後連結串列:");

sort (l);

}執行結果

3樓:匿名使用者

#include

#include

struct node  ;

struct node *creat(int n)//建立連結串列p2->next=null;

return list;

}  sort(struct node *list)//連結串列排序,氣泡排序}}

return list;

}void print(struct node *list)}int main()

4樓:僧震博

比較節點內容,然後交換節點的指標就好了;因為單向,所以需要額外的指標來記錄上一個節點的位置

c語言單向連結串列排序如何實現?

5樓:匿名使用者

struct student* printf_sort(struct student *head)

else

}else//不需要交換,則p2、ptemp前進1位}pfinished=p2;}}

C語言連結串列問題,c語言連結串列問題

我不知道你用什麼編譯器,不同的編譯器可能結果不一樣。會提示段錯誤的可能是vc編譯器,建議你除錯下 while p1 p1 num 0 struct student next 這個分號你寫錯了,所以會造成字元錯誤,然後定義連結串列的儲存結構是要用typedef struct student的。在主函式...

C語言連結串列與結構體,c語言結構體與連結串列

北風微風 include include define null 0 define len sizeof struct student struct student int n struct student creat void if n 0 head null p2 next null free ...

c語言連結串列寫約瑟夫環問題,c語言連結串列寫約瑟夫環問題

include include typedef struct node 節點存放一個資料和指向下一個節點的指標 node node link create int n 建立n個節點的迴圈連結串列 p pnext head 最後一個節點指向頭部,形成迴圈連結串列 return head void li...