| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 539 人关注过本帖
标题:线性表的插入删除
只看楼主 加入收藏
幸福林林
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-4-30
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
线性表的插入删除
#include"stdio.h"
#include"stdlib.h"                           
int*inistl(int m,int *n)                 
{int*v=NULL;
v=malloc(m*sizeof(int*));               
n=0;
return v;
}
void insl(int*v,int m,int*n,int i,int b)
{
int j;
if(*n>=m)                              
{printf("the stack is overflow\n");
return;
}
if(i>*n-1) i=*n+1;                    
if(i<1) i=1;                           
for(j=*n;j>=i;j--)                     
v[j]=v[j-1];
v[i-1]=b;
*n=*n+1;                                
}
void desl(int*v,int m,int*n,int i)     
{int j;
if(*n==0)                              
{printf("the stack is underflow\n ");
return;
}
if((i<1)||(i>*n))                     
{printf("not this element in the list!\n");
return;
}
for (j=i;j<=*n-1;j++)                  
v[j-1]=v[j];
*n=*n-1;                                 
return;
}
void input(int*v,int n)               
{int i;
for(i=0;i<n;i++)                     
scanf("%d",v+i);
}
void output(int*v,int n)            
{int i;
for(i=0;i<n;i++)
printf("%d",*(v+i));                 
}
serch(int*v,int n,int x)
{int k;
k=0;
while  ((k<n)&&(v[k]=!x))  k=k+1;
  if (k==n)  k=-1;
  return(k);
}
bserch(int*v,int n,int x)
{ int i,j,k;
i=1; j=n;
  while (i<=j)
    { k=(i+j)/2;
      if (v[k-1]==x)  return(k-1);
      if (v[k-1]>x)  j=k-1;
      else i=k+1;
    }
return(-1);
}
 bubsort(int v[],int n)  
{ int m,k,j,i,d; k=0;
  m=n-1; while (k<m)  
  { j=m-1; m=0;   
    for(i=k;i<=j;i++)
    if (v[i]>v[i+1])   
    {d=v[i];v[i]=v[i+1];v[i+1]=d;m=i;}
    j=k+1; k=0;     
    for (i=m;i>=j;i--)   
    if (v[i-1]>v[i])   
    {d=v[i];v[i]=v[i-1];v[i-1]=d;k=i;}
  }
  return(i);
}
qksort1(int p[],int m,int n)
{ int split(p,m,n) ;
  int  i;if (n>m)
  {
   i=split(p,m,n);   
   qksort1(p,m,i-1);
   qksort1(p,i+1,n);
  }
  return(i);}
 int split(p,m,n) ;
 int m,n, p[];
{ int i,j,k,u,t;
  i=m; j=n;k=(i+j)/2;
  if ((p[i]>=p[j])&&(p[j]>=p[k])) u=j;
  else if ((p[i]>=p[k])&&(p[k]>=p[j])) u=k;
  else u=i;
  t=p[u]; p[u]=p[i];
 while (i!=j)
 { while ((i<j)&&(p[j]>=t)) j=j-1;
   if (i<j){ p[i]=p[j]; i=i+1;
   while ((i<j)&&(p[i]<=t)) i=i+1;   
   if (i<j)        
   {p[j]=p[i]; j=j-1;}  
 }
 p[i]=t;
return(i);
}

void main()                          
{int *v,m,*n,i,b,x,y,k;               
n=(int *)malloc(sizeof(int));      
printf("请输入线性表容量:");        
scanf("%d",&m);
v=inistl(m,n);                     
printf("请输入线性表实际个数:");
scanf("%d",n);
printf("请输入线性表起始元素:");
input(v,*n);                       
printf("请输入线性表插入点位置:");
scanf("%d",&i);
printf("请输入线性表插入元素:");
scanf("%d",&b);
insl(v,m,n,i,b);                    
printf("输出操作后线性表:");        
output(v,*n);                       
printf("\n");
printf("请输入线性表删除点位置:");
scanf("%d",&i);
desl(v,m, n, i);                  
printf("输出操作后线性表:");
output(v,*n);                     
printf("\n");
printf("请输入要查找的元素:");
scanf("%d",&x);
printf("\n");
printf("please put choose 1 is search 2 is bsearch\n");
scanf("%d",&y);
  switch(y)
  {case 1:k=serch(v,*n,x);
 case 2:k=bserch(v,*n,x);}
if(k==-1)
printf("not find the element in line!\n");
else printf("the element in the line is %d\n",++k);
}
想实现线性表的删除插入功能 哪里出错了 急啊
搜索更多相关主题的帖子: include return 线性表 
2013-04-30 10:16
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:4 
看看经典的实现就好了,没必要自己重写

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-04-30 22:17
笑傲
Rank: 8Rank: 8
来 自:迪拜
等 级:蝙蝠侠
威 望:5
帖 子:223
专家分:856
注 册:2013-3-9
收藏
得分:4 
太乱了,没心情看

练就一身本领,只为笑傲江湖!
2013-04-30 22:33
mskeheng
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:48
专家分:179
注 册:2013-3-13
收藏
得分:4 
这个,确实不好看
2013-05-01 18:39
雪狼MJ
Rank: 8Rank: 8
来 自:甘肃
等 级:蝙蝠侠
威 望:4
帖 子:267
专家分:853
注 册:2012-5-27
收藏
得分:4 
太乱了,也没个注释,这些基本功能函数书里都有的,自己查着对一下就好了。

Edsger Dijkstra:算法+数据结构=程序
2013-05-01 18:42
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:4 
写的确实有点乱,给你个方法,如果想实现线性表的插入删除,你最好先创建个线性表的结构体形式,然后进行,你这样写很不利于查错,而且代码很乱,你的功能实现都是在你已定义线性表的哦基础上,不然你怎么进行定义线性表的对象进行操作

Maybe
2013-05-01 19:28
dengluoy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:127
专家分:165
注 册:2013-2-5
收藏
得分:4 
一个插入和删除,需要这么多代码吗,。。。
实在看不进去。。你拿出关键的代码。

一同学习, 一同进步
2013-05-02 21:40
快速回复:线性表的插入删除
数据加载中...
 
   



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

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