| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 256 人关注过本帖
标题:分享一个链表的程序,交流心得[非求助帖]
只看楼主 加入收藏
xdlearner
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2012-3-7
结帖率:80%
收藏
已结贴  问题点数:8 回复次数:1 
分享一个链表的程序,交流心得[非求助帖]
程序代码:
#include<stdio.h>
#include<stdlib.h>
#define INFEASIBLE -2;
#define OK 0;
struct node{
     int data;
     struct node *next;

 };

 typedef struct node linklist;

 int creast(linklist *h,int n);//定义创建链表的函数
 int del(linklist *h);//定义删除链表第一个数的函数
 int scan(linklist *h);//定义查看整个链表的函数
 int mp(linklist *h);//定义冒泡函数
 int main(){
     int n,i;
     linklist *h;
     printf("Please input the n:");
     scanf("%d",&n);//输入要创建的链表的元素个数
     h=(linklist*)malloc(sizeof(struct node));//给头节点申请空间
     creast(h,n);//创建
     mp(h);//冒泡排序
     for(i=0;i<n;i++){
         scan(h);//输出
         del(h);//删除第一个数
         printf("\n");
     }
     return 0;

 }

 int creast(linklist *h,int n){//头插法建立链表
     printf("Please input the data:");
     int i;
     linklist *p;
     if(!h)
         return INFEASIBLE;
     h->next=NULL;
     for(i=n;i>0;i--){
         p=(linklist*)malloc(sizeof(struct node));
         if(!p)
             return INFEASIBLE;
         scanf("%d",&p->data);
         p->next=h->next;
         h->next=p;
     }
     return OK;

 }

 int scan(linklist *h){
     linklist *m;
     if(h==NULL) printf("Empty List!\n");
     m=(linklist*)malloc(sizeof(struct node));
     m=h->next;
     while(m){
     printf("%d\t",m->data);
     m=m->next;
     }
     return OK;

 }

 int del(linklist *h){
     linklist *q;
     q=(linklist*)malloc(sizeof(struct node));
     q=h->next;
     h->next=q->next;
     free(q);
     return OK;

 }

 int mp(linklist *h){
    linklist *e,*f;//创建中间的变量
    int a;
    if(h==NULL) return INFEASIBLE;//头节点不空
    for(e=h->next;e!= NULL;e=e->next){//控制总体排列次数
        for(f=h->next;f->next!=NULL;f=f->next){//控制每一大次排列次数
            if(f->data > f->next->data){
                a=f->data;
                f->data = f->next->data;
                f->next->data=a;
            }
        }
    }
        free(e);
        //free(f);
    return OK;

 }

另外想问,为啥有free(f)就会把指针搞乱,导致最后一位乱码,没有就能正常运行。。。。
搜索更多相关主题的帖子: next 
2012-03-12 18:27
zd1505675319
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:178
注 册:2011-11-4
收藏
得分:8 
好高
2012-03-12 19:04
快速回复:分享一个链表的程序,交流心得[非求助帖]
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018173 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved