• 计算机讨论版
  • 电脑诊所
  • 菜鸟学院
  • 软件世界
  • 安全专区
  • 硬件世界
  • 网络世界
  • 网页设计
  • 图像设计
  • 程序设计
  • 操作系统
  • 计算机考试
  • 电脑故障
  • 电脑学习
  • 电脑技术
  • 电脑入门
  • 计算机知识
  • 电脑之家
  • 故障诊断
  • 电脑医院
  • 电脑学校
  • 电脑维护
  • 电脑医生
  • 电脑问答
  • 计算机问题
  • 电脑小知识
  • 电脑软件
  • 电脑diy
  • 你问我答
  • 网友俱乐部
  • 实用技巧
  • 初级应用
  • 心得分享
  • 软硬兼施
  • 电脑之家
  • 维护资料
  • 软件应用
  • 软件交流
  • 电脑硬件
  • 硬件知识
  • 电脑网络
  • windows
  • 程序设计

    程序设计
    ·+++++++++关于cpu利用率滴c程序,各位c大...
    ·请问一个关于c语言的菜问题
    ·小菜一问  !
    ·关于DAO
    ·直接通过ODBCAPI访问SQL数据库(一)
    ·有没有什么地方下载ASP论坛源代码的啊
    ·关于算法
    ·win 2003的IIS
    ·[求助]VB读取顺序文件,空格符不起作用。急!
    ·这里有人玩Qbasick吗?很古老的那种?
    ·直接通过ODBCAPI访问SQL数据库(二)
    ·请问xp中可以用tc编程吗
    ·注册码是怎样炼成的
    ·跪求《程序设计实践》!
    ·[求助]SQL
    ·哪里有下vb6软件和vb6教程的?
    ·Enc-Base64位加密程序源代码下[分享]
    ·[分享]Enc-Base64位加密程序源代码上
    ·帮帮忙~TD有win2000下的编译和连接程序么~
    ·vc++如何立即重绘窗口?
    ·请教如何用asp弄的图片刷新显示
    ·Melissa的源码[转帖]
    ·[原创]如何取得计算机名
    ·各位大虾帮帮忙了
    ·[求助]关于vb
    ·SQL和VB的问题
    ·我提一下意见,关于板块的改进!
    ·请教一个入门问题,ACCESS
    ·[注意]    寻找编程爱好者!!!
    ·ACCESS 小问题?,先谢了!!

    需要两段代码,希望有人帮忙

    类别: 程序设计  时间: 2007.03.15

    JOHUA
    会C语言的就进来帮我一下!!多谢!!!
    请可不可以帮我编一编这个程序,一定要用C语言编的啊!!!
          程序如下:
         1:建立链表
         2:删除链表 
         3:插入结点
         4:输出链表 
         5:退出
       

       这个程序我以编了出来,但好长!!我想看看多一点高手的编写,好好的学习一下!!!多谢各位的指教!!小弟感激不尽!!


    JOHUA

    我看了!!!只是因为我编的那程序太长了!!!想看看别人的编写啊!!

    hgs

    许多书上都有的嘛~

    JOHUA

    但是和我想要的不同呢?

    hgs

    呵呵~不知道你想有什么不同,改下子程序名吗~要改结构怕还是书上的简单啊!
    记得编好了给大家看看哦!

    beblie

    不如你把你的写出来,,,我们看看啊,,参考一下,,,

    JOHUA

    #define NULL 0
    #define LEN sizeof(s)
    int n;
    s
     {long num;
     s *data;
     s *next;
      };
      s *creat(void)
     {s *head;
      s *p1,p2;
      long num;
      p1=(S *)malloc(LEN);
      head=p1;
      p2=(S *)malloc(LEN);
      printf("请输入建立表数输0为退出");
      scanf(%ld",num);
     while(num=0)
     {p2->data=num;p2->next=NULL;
     p2=(s *)malloc(LEN);
     scanf("%ld",num);
     }
     return(head);
     }
     s *del(s *head)
     {s *p1,p2;
     int i;
     int j=1;
     p1=head;
     loop: printf("\n当前共有的结点数%d",n);
      printf("\n请输入删除的data值");
      scanf("%d",i)
      if((i<0)&&(i>n))
      {printf("错误!请重新输入: ");
      goto
      }
      if(i=1)
      {head=p1->next;
      p1->next=head->next;
      }
      else
      {while(j<i-1)
      {p1=p1->next;
      i++}
      p2=p1->next;p1->next=p2->next;
     }
     n=n-1;
     free(p1);
     return(hexd);
     }
     }
     s *insert(s *head)
     {s *p1,*p2,p0;
     int p;
     int j=1;
     long num;
     p1=head;
     printf("\n请输入在第几个结点前插入新结点?");
     scanf(%d",&p);
     if(p=0)
     {p0=(s *)malloc(LEN);
      printf("\n请输入该结点的data值:");
      scanf(%ld",&num):
      p0->=data=num;p0->next=p1->next;
      head=p0;
      p1=p0;n=n+1;
      return(head);
      }
      else
      {while(j<p-1)
       {p1=p->next;j++;}
       p0=(s *)malloc(LEN);
       printf("\n请输入该结点的data值:");
       scanf("%ld",num);
       p0->data=num;
       if(p>n)
       {p0->next=0;
       p1->next=p0;
       n=n+1;
       reture(head);
       }
       else
       {p0->next=p1->next;
       p1->next=p0;
       n=n+1;
       reture(head);
       }
       }
       void print(s *head);
       {s *p1;
       printf("\n当前链表的个数一共有:%d个",n);
       p1=head;
       while(p1!=NULL);
       {printf("%ld"p1->num);
       p1=p1->next;
       }
      }
      viod ss()
      {printf("链表还没有建立,请重新建立链表先!\n");}
      main()
      {s *head;
      int i,k=0;
      long num;
      printf("1:建立链表\n");
      printf("2:删除结点\n");
      printf("3:插入结点\n");
      printf("4:输出链表\n");
      printf("5:退出\n");
      printf("请输入你的操作选项:");
      scanf("%d",&i);
      while(i!=5)
      {switch(i)
      {case 1: {if(k==0) head=(ceat();
       else {printf("链表已建立.\n");
             k=1;}break;
      case 2: {if(n!=0) head=del();
      else ss();
      } break;
     case 3: {if(n!=0)
     head=insert();
     else ss();
     } break;
      case 4: print(head); break;
      defaulf: printf("请输入1-5的数\n");
      printf("请输入你的操作选项");
      scanf("%d",&i);
      }
      }
    因为太长了!!不知有没有打错!!

    hgs

    呵呵~还可以啊~没仔细看~!
    有三处少了:"
    还有几处声明不对~
    那位有空仔细看下~


    [此贴子已经被作者于2003-11-8 21:15:15编辑过]


    JOHUA

    那里不对啊!!哗!!我那天改了.越来越多错啊!!烦死了!!哈哈

    JOHUA

    hgs看来你也是一个编程高手啊!!有机会的话请多多指教 Thank you

    hgs

    呵呵~我还不是小菜~
    你在c环境下改错好后保存,然后把后缀是c的那个的后缀改为txt,再复制就不会出现打字错误了~!
    我一般都在文本文件里编好再改后缀为c,再运行~
    有时间我定看,改好也定给你~主要是不太清楚你的思路,编的时候该/* */作些说明,看的吃力~

    JOHUA

    好的,我也会努力的,多谢你!!!

    hgs

    哎~今天空了仔细看了一下,我真的不知道你在想什么哦~除了改改变量名没什么改变,倒是语法错误一大堆~痛苦!

    JOHUA

    没有办法啊!!我笨啊,好难学啊!!哈哈!!
         你可以骗条比我看看吗??



    JOHUA

    好的,多谢

    hgs

    菜鸟~我!呵呵~刚过了二级c,高兴!找书编了下,还是有错(警告),不过没楼主那么多~
    大家有兴趣看看~提提意见~我想主要是main函数还是有问题~结构struct子程序的调用我看了很久,还不很熟悉~

    #include <stdlib.h>
    struct node
    {int data;
     struct node *next;
    };

    /*函数*creatlist()用来建立带头节点的单向链表,返回值为struct node型的指针,即链表的头指针*/
    struct node *creatlist()
    {struct node *h,*p,*q;
     int a;
    /*申请动态内存存放头节点h*/
     h=(struct node *)malloc(sizeof(struct node));
     p=q=h;
     scanf("%d",&a);
    /*输入一整数,如果输入的是非0数,就进入不断将新节点添加在链表末尾的while循环*/
    while(a!=0)
     {p=(struct node *)malloc(sizeof(struct node));
      q->data=a;
      q->next=p;
      p=q;
      scanf("%d",&a);
     }
    p->next=NULL;
    return h;
    }

    /*find()函数用来找出要删除的节点*/
    struct node *find(struct node *h,int x)
    {struct node *p,*q;
     p=h->next;
     q=h;
    /*将指针指向当前节点,q指向前一节点,如果当前节点不是链表末尾,其data域值也不是要查找的x,程序进入while循环*/
     while(p!=NULL&&p->data!=x)
    /*while循环中,移动q和p,保证q在前,直到已达到末尾或已找到data域值为x的p节点,退出循环*/
     {q=p;
      p=p->next;
     }
     if(p==NULL)return NULL;
     else return q;
    }

    /*del()用来将找到的节点删除,并释放被删除的节点所占用的储存空间*/
    struct node *del(struct node *h,int x)
    {struct node *p,*q;
     if(h->next==NULL)
     {printf("List is null.\n");
      return 0;
     }
     q=find(h,x);  /*调用find函数找节点,并接收找到的节点的返回指针q*/
     if(q!=NULL)
     {p=q->next;
      q->next=p->next;
      free(p);
      return 1;
     }
     else return 0;
    }/*如果节点存在,将q作当前指针,p指向要删除的节点,p->next指向下一节点,然后释放p节点空间,返回值1通知调用函数;若要删除的节点不存在就返回0*/

    /*函数insert()用来插入新节点*/
    insert(struct node *h,int x)
    {struct node *p,*q,*s;
     s=(struct node *)malloc(sizeof(struct node));
     s->data=x;
     q=h;
     p=h->next;
     while(p!=NULL&&x>p->data)
     {q=p;
      p=p->next;
     }
     s->next=p;
     q->next=s;
    }

    /*函数printlist用来输出链表各节点data域中的数据*/
    struct node *printlist(struct node *h)
    {struct node *p;
     p=h->next;
     while(p!=NULL)
     {printf("->%d ",p->data);
      p=p->next;
     }
     printf("\n");
    }

    main()
    {struct node *head; /*声明头指针*head,用来接收creastlist链表头指针*/
     int n,y,x;
     top: ;
     printf("\n**********************************\n");
     printf("print in a NO. \n 1  TO  creatlist\n 2  TO  del node\n 3  TO  insert node\n 4  TO  printlist\n 5  TO  quit system");
     printf("\n**********************************\n");
     scanf("%d",&n);
     switch(n)
     {case 1: head=creatlist();goto top;
      case 2: scanf("the numbuer you want to del x=%d",&x);
          y=del(head,x);
          if(y==1) /*del返回值为1则已删除*/
          {printf("the code had been del");goto top;}
          else{printf("unexpert error the code undel");goto top;}
      case 3: scanf("the numbuer you want to insert x=%d",&x);
          insert(head,x);goto top;
      case 4: printlist(head);goto top;
      case 5: exit;
      default: printf("The NO. you print in must one of 1,2,3,4 and 5.");break;
      }
    }


    JOHUA

    恭喜你啊!!多谢你的分亨

    hgs

    不用谢我啦~还不是学习~而且还是有错的,能用还早,后面几个子程序的调用好象还没正确~
    不过还是发现点以前没遇到过的东西:switch如果写成swith(少了个c),编译的时候会在第一个case提醒main函数少了分号,害我找了好久~哈哈!

    JOHUA

    你有QQ吗?我现在也是在学紧C语言和JVAV有问题可以大家讨论一下啊!!哈哈!!]

        我的QQ是45346171


    hgs

    以下是引用JOHUA在2003-11-14 22:26:00的发言:
    你有QQ吗?我现在也是在学紧C语言和JVAV有问题可以大家讨论一下啊!!哈哈!!]

         我的QQ是45346171


    加了~呵呵!你东莞的啊~我想以后找工作很可能去那边哦~


    JOHUA

    可以啊!!如果你来的,有什么事的可以找我啊!!我是东莞寮步的,

    JOHUA

    好啊,大家多一点研究!!大家一起进步啊!!我也好高兴可以认到你们!!哈哈!!

             想做朋友就加我的QQ吧!!45346171


    上一篇:+++++++++关于cpu利用率滴c程序,各位c大... 下一篇:哪里有下vb6软件和vb6教程的?

    计算机讨论版 © 版权所有

    提示:计算机讨论版致力于电脑信息的分享与传播,内容仅供参考,按此操作责任自负。