| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 432 人关注过本帖
标题:c语言 单链表的创建 删除 插入 排序 求调试 、
只看楼主 加入收藏
lotus007
Rank: 1
等 级:新手上路
帖 子:4
专家分:1
注 册:2013-4-24
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
c语言 单链表的创建 删除 插入 排序 求调试 、
#include <stdio.h>
#include<malloc.h>

typedef struct Node
      
       {
      
            int    data;
   
            struct Node * next;

       }   Node,* LinkList;

    void  InitList(LinkList * L,int e);                  //charu
  
    void  GreatFormTail(LinkList * L);             //chuanjian

    void  Out(LinkList * L);                       //shuchu
 
    int   DelList(LinkList * L);  //shanchu
 
   void main()

   {     Node * L;

         //LinkList L;

         int m=0,i=0,e=0;
         
        // LinkList L;
 
         printf("请输入您要进行的操作的序号:");
 
         printf("1 输入数据\n 2 插入数据\n 3 删除数据");
   
         scanf("%d",&m);
 
         switch( m )
 
         { case  1:   GreatFormTail( L );       break;
     
           case  2:   printf("输入一个整形数据:");

                      scanf("%d",&e);
               
                      InItList( L , e);         break;
 
           case  3:   DelList( L);            break;

           default:   printf("输入有误,请重新输入");
        
       }
   }
//------------------------------------------------------------ 创建------------------------
   void GreatFormTail(Node * L)
 
      {  Node * r,* s;
 
         int flag=1,c=0;
   
         r=L;
 
         while(flag)
   
         {      printf("请输入整形数据,按ENTER结束。");
            
                scanf("%d",&c);
 
                if(c!='\r')
        
                {   s=(Node *)malloc(sizeof(Node));
 
                    s->data=c;
 
                    r->next=s;
 
                    r=s;

                }
      
                else
 
                {
                  flag=0;

                  r->next=NULL;
                }
         }
   }
   
 
  //----------------------------------------------插入---------------------------------
   
 
 int InItList(Node * L,int  e )   //插入
 
 {    Node * pre, * s;

      s=L->next;

      while(s!=NULL)
 
        {
 
            if(e<(s->data))
 
               {  pre=(Node *)malloc(sizeof(Node));
  
                  pre->data=e;
 
                  pre->next=s->next;
 
                  s->next=pre;
 
                }
              s=s->next;
 
            }

      return e;

   }
 //------------------------------删除-----------------------
 
void DelList(Node * L)
 
      {    Node * pre,* r;
 
           int i=0,k=1,e=0;
 
           pre=L;

           printf("请输入你要删除的数据序号:");

           scanf("%4d",&i);

      while(pre->next!=NULL&&k<i-1)
 
       {  pre=pre->next;
 
          k=k+1;
 
        }
   
      if(!(pre->next))
  
       {  printf("删除的位置不合法!");
 
          //return 0;
       }
      
       r=pre->next;

       pre->next=r->next;

       e=r->data;

       free(r);
 
    }
   
   
 

  
     
   
     

   
      
//------------------------------输出且排序----------------------------
   
      
void Out(Node * L)

  {
  
  Node * s;
 
  Node * b;
 
  Node * c;
   
  Node * f;
  
  int a=0,j=0,k=0;
 
  s=L;

  s=s->next;
 
  b=(Node *)malloc(sizeof(Node));
  
  c=(Node *)malloc(sizeof(Node));

   while(s->next!=NULL)
 
      {
         s=s->next;
 
         k++;
      }
 
   for(j=0;j<k;j++)
 
        {
           for(a=0;a<k-1;a++)
 
              {   
                 b->data=s->data;
 
                 s=s->next;
  
                 if(s->data<b->data)
 
                      {
                          c->data=b->data;
 
                          b->data=s->data;
 
                          s->data=c->data;
   
                       }
 
                    else break;
                  
                  }
              s=s->next;
 
              while(s!=NULL)
 
                {
                     printf("%4d",s->data);
 
                     s=s->next;
 
                  }
             }
   
   
        }
搜索更多相关主题的帖子: void c语言 include 
2013-04-24 12:11
lotus007
Rank: 1
等 级:新手上路
帖 子:4
专家分:1
注 册:2013-4-24
收藏
得分:0 
自己顶一下、、、、为我们加油、
2013-04-24 12:12
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:20 
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

typedef  int ElemType;
  typedef struct node
  {
      ElemType data;
      struct node *next;
  }node,*LinkList;


  LinkList creat()
  {
      LinkList L;
      L=(LinkList)malloc(sizeof(node));
      if(L)
          L->next=NULL;
      return L;
  }



  int getelem(LinkList L,int i,int e)
  {
      LinkList p;
      int j;
      p=L->next;
      j=1;
      while(p&&j<i)
      {
          p=p->next;
          j++;
      }

      if(!p||j>i)
          return -1;
          e=p->data;
      return 0;
  }


 
int insert(LinkList L,int i,ElemType e)
  {
      LinkList p,s;
      int j;
      j=0;
      p=L;
      while(p&&j<i-1)
      {
          p=p->next;
          ++j;
      }
      s=(LinkList)malloc(sizeof(node));
      if(!s||j>i-1)
          return -1;
      s->next=p->next;
      p->next=s;
      s->data=e;
      return 0;
  }


 int del(LinkList L,int i)
  {
      LinkList p;
      int j;
      j=0;
      p=L;
      while(p->next&&j<i-1)
      {
          p=p->next;
          p++;
      }
      if(!p->next||j>i-1)
          return -1;
      p->next=p->next->next;
      free(p->next);
      return 0;
  }






int main(int argc, char* argv[])
{
   
return 0;
}


在main函数里面调试,我的main函数就没写了







三十年河东,三十年河西,莫欺少年穷!
2013-04-24 12:51
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
调试的话   你可以再main函数里设置断点(F9)啊,然后逐步运行(F5);我们班也是,实验课好多同学不会调试

三十年河东,三十年河西,莫欺少年穷!
2013-04-24 19:58
lotus007
Rank: 1
等 级:新手上路
帖 子:4
专家分:1
注 册:2013-4-24
收藏
得分:0 
ok//   谢啦
2013-04-24 21:53
快速回复:c语言 单链表的创建 删除 插入 排序 求调试 、
数据加载中...
 
   



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

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