rt
解决方案 »
- installshield 如何调用64位版本的dll中的函数
- vs2005问题 error C3867: 请问高手 怎样对调用的方法进行地址变换
- 入门级问题-关于编写函数时自动出现参数的问题
- malloc和new能保证申请到的全是物理内存吗?
- CreateToolhelp32Snapshot ???
- 位图按钮? help!
- 请教如何增加某个程序的Uninstall快捷方式在桌面上,谢谢了
- 如何用代码 弹出“打开文件”对话框,并且返回一个文件路径?
- MDI窗口中有关子窗口菜单的问题
- http://lzcw116.t35.com/ 我的个人主页,欢迎各位大虾光临啊。:)给点意见啊
- 大家帮帮忙!谢谢了!
- 求 vc Comment Wizard 插件。
typedef struct node
{
int i;
node *next;
}NODE; NODE *bubblesort(NODE *head)
{
NODE *q,*tail,*p=(NODE*)malloc(sizeof(NODE)); // 使指针p指向新开辟的结点
p->next=head; // 使新结点的next成员指向旧链表的头head
head=p; // 旧链表头head指向新结点
// 以上三条语句的作用是在旧链表head的前面增加一个结点
tail=NULL;
while(tail!=head->next)
{
p=head;
q=p->next; // q总是指向"p所指结点"的下一结点
while(q->next!=tail) // 当q->next的值为NULL是,表示已达链表结尾
{
if(p->next->i <q->next->i) // 当前一结点的i值小于后一结点的i值是,
{
p->next=q->next;
q->next=q->next->next;
p->next->next=q;
}
p=p->next;
q=p->next; // 以上两条语句使p、q分别指向各自的下一结点
}
tail=q; // 使tail指向"每次排序后的q所指的结点"
}
p=head->next; // p指向head->next,也就是p指向旧链表的表头
free(head); // 释放在函数内新开辟的结点
return(p);
} 具体参见数据结构,算法等书籍