在此程序中,函数fun的功能是将带头结点的单向链表结点数据域中的数据从小到大排序。\n\n即若原链表结点数据域从头至尾的数据为:10、 4、2、8、6,排序后链表结点数据域从头至尾的数据为: 2、4、6、8、10。\n\n#include \u003Cstdio.h>\n#include \u003Cstdlib.h>\n#define N 6\ntypedef struct node {\n int data;\n struct node *next;\n} NODE;\nvoid fun(NODE *h)\n{ NODE *p, *q; int t;\n/**********found**********/\n p = __1__ ;\n while (p) {\n/**********found**********/\n q = __2__ ;\n while (q) {\n/**********found**********/\n if (p->data __3__ q->data)\n { t = p->data; p->data = q->data; q->data = t; }\n q = q->next;\n }\n p = p->next;\n }\n}\nNODE *creatlist(int a[])\n{ NODE *h,*p,*q; int i;\n h = (NODE *)malloc(sizeof(NODE));\n h->next = NULL;\n for(i=0; i\u003CN; i++)\n { q=(NODE *)malloc(sizeof(NODE));\n q->data=a[i];\n q->next = NULL;\n if (h->next == NULL) h->next = p = q;\n else { p->next = q; p = q; }\n }\n return h;\n}\nvoid outlist(NODE *h)\n{ NODE *p;\n p = h->next;\n if (p==NULL) printf(\"The list is NULL!\\n\");\n else\n { printf(\"\\nHead \");\n do\n { printf(\"->%d\", p->data); p=p->next; }\n while(p!=NULL);\n printf(\"->End\\n\");\n }\n}\nvoid main()\n{ NODE *head;\n int a[N]= {0, 10, 4, 2, 8, 6 };\n head=creatlist(a);\n printf(\"\\nThe original list:\\n\");\n outlist(head);\n fun(head);\n printf(\"\\nThe list after sorting :\\n\");\n outlist(head);\n}
时间: 2023-05-26 15:06:55 浏览: 214
函数fun的功能是对带头结点的单向链表进行排序,将结点数据域中的数据从小到大排列。例如,如果原链表结点数据域从头至尾的数据为10、4、2、8、6,调用函数fun后,排序后的链表结点数据域从头至尾的数据就会变成2、4、6、8、10。
阅读全文