注册 登录
编程论坛 数据结构与算法

数据结构是用c语言描述的,但是一段程序如何判断是保存为.c还是.cpp,帖子内容为数据结构的程序,为何保存为.cpp会有很多错误,我是用devc++那个软件编译

五游士道 发布于 2015-04-11 10:24, 2549 次点击
#define MAXSIZE 100    /*宏定义*/
#define OK 1
#define OVERFLOW -2

#include "stdio.h"    /*包含输入输出文件*/

typedef int elemtype;
typedef struct          /*定义顺序表的结构*/
{elemtype vec[MAXSIZE]; /*顺序表数据成员所占据的存储空间*/
 int last;              /*顺序表中最后一个元素在数组中的下标(或向量中的位置)从0开始*/
}sequenlist;

int insert(L,i,x)  /*在顺序表的第i个元素之前插入一个新元素x*/
sequenlist *L;
int i;
elemtype x;
{ int j;
 if(((*L).last)>=MAXSIZE-1)
   {printf("the list is overflow!\n");
    return(0); /*溢出判断*/
    }
 else
    if((i<1)||(i>(*L).last+1))
     {printf("position is not correct!\n");
      return(0); /*插入位置不正确*/
     }
    else
     {for(j=(*L).last;j>=i-1;j--)  /*后移元素*/
      (*L).vec[j+1]=(*L).vec[j];
      (*L).vec[i-1]=x;     /*插入新元素*/
      (*L).last=(*L).last+1;/*修改last的值*/
      }
      return(1);
 }
 void delete(L,i)  /*删除顺序表的第i个元素*/
 sequenlist *L;
 int i;
 { int j;
  if((i<1)||(i>(*L).last+2))
      printf("delete fail\n");
  else
      {for(j=i;j<=(*L).last;j++)
          (*L).vec[j-1]=(*L).vec[j];/*前移元素,覆盖掉要删除元素的值*/
       (*L).last--;  /*修改last的值*/
       }
 }

 void listprint(sequenlist *L) /*输出线性表*/
 {int i;
  for(i=0;i<=(*L).last;i++)
  printf("i,e=%d,%d\n",i,L->vec[i]);
 }

  main()
 {
  sequenlist sl={{1,2,3,4,5,6,7,8,9,10},9};//直接给顺序表赋初值
  sequenlist *L;/*定义一个指向顺序表类型的指针变量*/
  int i,j,x;
  elemtype e;
  L=&sl; /*给指针变量赋值*/
  printf("please input the insert position and insert value\n");
  scanf("%d,%d",&i,&x);
  printf("the insert position: %d \ninsert value:%d\n",i,x);
  insert(L,i,x);
  listprint(L);
  printf("please intput the delete position:");
  scanf("%d",&j);
  delete(L,j);
  listprint(L);
}
2 回复
#2
五游士道2015-04-11 10:41
大家明白我的意思吗,就是说一开始新建源代码,后面保存时不是可以修改文件后缀名吗,如果是.cpp编译就会有很多错误,如果是.c直接成功,这是为什么,所以我产生了疑问,一段程序如何判断保存为.c还是.cpp
#3
向上吧,少年2015-05-05 17:41
保存为.cpp的时候是要添加头文件的吧#includ<iostream>,后边还要再补上一句using namspace,我的就是这么改的,希望能帮到你
1