| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 509 人关注过本帖
标题:新手菜鸟 刚开始学习数据结构 不知道哪里错了 求大神指导
取消只看楼主 加入收藏
cclosttemp
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-10-19
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:1 
新手菜鸟 刚开始学习数据结构 不知道哪里错了 求大神指导
#include "stdio.h"
#include "malloc.h"
#include "process.h"
#include "string.h"
#define OK 1
#define ERROR 0
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define TRUE 1
#define FALSE 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;
typedef int ElemType;
typedef struct{
  ElemType *elem;
  int length;
  int listsize;
 }List;


Status InitList(List L)
{

 L.elem=(ElemType * ) malloc(LIST_INIT_SIZE * sizeof(ElemType));
 if(!L.elem) exit(OVERFLOW);
 L.length = 0;
 L.listsize=LIST_INIT_SIZE;
 printf("初始化一个线性表\n\n");
 return OK;
}


Status ListInsert(List L,int i,ElemType e){
 ElemType *q,*p,*newbase;
 if (i<1||i>L.length+1) return ERROR;
 if (L.length>=L.listsize){
   newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
   if (!newbase) return(OVERFLOW);
   L.elem=newbase;
   L.listsize+=LISTINCREMENT;
   }
 q=&(L.elem[i-1]);
 for(p=&(L.elem[L.length-1]);p>=q;--p) *(p+1)=*p;
 *q=e;
 ++L.length;
 return OK;
 }


 Status ListDelete(List L,int i,ElemType e){
  ElemType *p,*q;
  if ((i<1)||(i>L.length)) return ERROR;
  p=&(L.elem[i-1]);
  e= *p;
  q=(L.elem+L.length-1);
  for (++p;p<=q;++p) *(p-1)=*p;
  --L.length;
  return OK;
  }


void main()
{  
 List L;
 ElemType e1,e2;
 Status k;
 int i,a,b,c,d,e,n,j;

 InitList(L);
 printf("初始化表元素个数:");
  scanf("%d",&n);

 for(i=1;i<=n;i++)
 {
  printf("输入所插入的数据:");
  scanf("%d",&a);
   ListInsert(L,i,a);
 }


for(j=1;j<2;)
 {
  printf("请选择您要进行的操作:1 :插入 2:查找 3:删除 \n");
  scanf("%d",&c);
if(c==1)
{
  printf("请输入插入元素的位置及元素:");
scanf("%d %d",&d,&e);
ListInsert(L,d,e);
printf("线性表元素总数为%d\n",n+1);
n++;
for(i=1;i<=n;i++)
{printf("%d \n",L.elem[i-1]);}

}


 if(c==2)
 {
  printf("输入查找的位数:");
 scanf("%d",&b);
 
 if(b<1||b>L.length)
 {printf("输入错误!!!\n");
 continue ;}
   GetElem(L,b,e1);
    if(k=ERROR)
  printf("读取数据失败,",b);
 else
 printf("第%d个元素的值为%d\n",b,e1);

 }


 if(c==3)
 {
printf("输入删除第几个数:");
scanf("%d",&c);
if(c<1||c>L.length)
  printf("输入错误!!!元素不存在\n");
    k=ListDelete(L,c,e2);
     if(k==ERROR)
       printf("删除第%d个元素失败\n ",c);
     else
       printf("删除第%d个元素成功,其值为%d\n\n",c,e2);
 }
}

搜索更多相关主题的帖子: include 
2013-10-19 20:09
cclosttemp
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-10-19
收藏
得分:0 
这是我又重新改的程序 运行起来还是有问题  大神 给看看哪里错了吧
#include "stdio.h"
#include "malloc.h"
#include "process.h"
#include "string.h"
#define OK 1
#define ERROR 0
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define TRUE 1
#define FALSE 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;
typedef int ElemType;
typedef struct{
  ElemType *elem;
  int length;
  int listsize;
 }List;


Status InitList(List L)
{

 L.elem=(ElemType * ) malloc(LIST_INIT_SIZE * sizeof(ElemType));
 if(!L.elem) exit(OVERFLOW);
 L.length = 0;
 L.listsize=LIST_INIT_SIZE;
 printf("初始化一个线性表\n\n");
 return OK;
}


Status ListInsert(List L,int i,ElemType e){
 ElemType *q,*p,*newbase;
 if (i<1||i>L.length+1) return ERROR;
 if (L.length>=L.listsize){
   newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
   if (!newbase) return(OVERFLOW);
   L.elem=newbase;
   L.listsize+=LISTINCREMENT;
   }
 q=&(L.elem[i-1]);
 for(p=&(L.elem[L.length-1]);p>=q;--p) *(p+1)=*p;
 *q=e;
 ++L.length;
 return OK;
 }


 Status ListDelete(List L,int i,ElemType e2){
  ElemType *p,*q;
  if ((i<1)||(i>L.length)) return ERROR;
  p=&(L.elem[i-1]);
  e2= *p;
  q=(L.elem+L.length-1);
  for (++p;p<=q;++p) *(p-1)=*p;
  --L.length;
  return OK;
  }


void main()
{  
 List L;
 ElemType e1,e2;
 Status k;
 int i,a,b,c,d,e,n,j;

 InitList(L);
 printf("初始化表元素个数:");
  scanf("%d",&n);

 for(i=1;i<=n;i++)
 {
  printf("输入所插入的数据:");
  scanf("%d",&a);
   ListInsert(L,i,a);
 }


for(j=1;j<2;)
 {
  printf("请选择您要进行的操作:1:插入 2:删除 \n");
  scanf("%d",&c);
if(c==1)
{
  printf("请输入插入元素的位置及元素:");
scanf("%d %d",&d,&e);
ListInsert(L,d,e);
printf("线性表元素总数为%d\n",n+1);
n++;
for(i=1;i<=n;i++)
{printf("%d \n",L.elem[i-1]);}

}




 if(c==2)
 {
printf("输入删除第几个数:");
scanf("%d",&c);
if(c<1||c>L.length)
  printf("输入错误!!!元素不存在\n");
    k=ListDelete(L,c,e2);
     if(k==ERROR)
       printf("删除第%d个元素失败\n ",c);
     else
       printf("删除第%d个元素成功,其值为%d\n\n",c,e2);
 }
}
}
2013-10-20 11:34
快速回复:新手菜鸟 刚开始学习数据结构 不知道哪里错了 求大神指导
数据加载中...
 
   



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

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