|
发表于 2013-10-11 08:16:42
|
显示全部楼层
- # include <stdio.h>
- # include <malloc.h>
- typedef struct node
- {
- int data;
- struct node * pnext;
- } NODE, * PNODE;
- PNODE build_list()
- {
- int len;
- int val;
- PNODE phead = (PNODE)malloc(sizeof(NODE));//构造头节点
- PNODE tail = phead; //构造永远指向尾节点的tail指针
- tail->pnext = NULL;//把头节点的指针域清空
- printf("请输入节点个数:");
- scanf("%d",&len);
- for (int i = 0; i < len; ++i)
- {
- PNODE pnew = (PNODE)malloc(sizeof(NODE));
- printf("请输入第%d个节点的值:",i + 1);
- scanf("%d",&val);
- pnew->data = val;
- tail->pnext = pnew;
- tail = pnew;
- tail->pnext = NULL;
- }
- return phead;
- }
- void traverse_list(PNODE phead)
- {
- PNODE p;
- p = phead;
- while (p->pnext != NULL)
- {
- p = p->pnext;
- printf("%d ",p->data);
- }
- printf("\n");
- return ;
- }
- int long_list(PNODE phead)
- {
- PNODE p = phead->pnext;
- int len = 0;
- while (NULL != p)
- {
- len ++;
- p = p->pnext;
- }
- return len;
- }
- void sort_list(PNODE phead,int len) //排序
- {
- int i,j,t;
- PNODE p,q ;
- for (i = 0,p = phead->pnext; i < len-1; ++i,p = p->pnext)
- {
- for (j = i + 1,q = p->pnext; j < len; ++j,q = q->pnext)
- {
- if (q->data < p->data) //a[j] < a[j + 1]
- {
- t = q->data; // t = a[j];
- q->data = p->data; //a[j] = a[j+1];
- p->data = t; //a[j+1] = t;
- }
- }
- }
- }
- int main(void)
- {
- PNODE phead ;
- phead = build_list();
- traverse_list(phead);
- int len = long_list(phead);
- sort_list(phead,len);
- traverse_list(phead);
- return 0;
- }
复制代码
|
|