‖№小嚕 ‖№小嚕
关注数: 267 粉丝数: 126 发帖数: 1,834 关注贴吧数: 41
求帮助, #define LIST_INIT_SIZE 1000 #define LISTINCREMENT 10 #include <stdio.h> #include <stdlib.h> #include <malloc.h> #define OK 1 #define ERROR 0 #define OVERFLOW -2 //顺序表的存储结构定义 typedef int Status; typedef int ElemType; typedef struct{ int *elem; //首地址 int length; //顺序表的长度 int listsize; //顺序表的存储容量 } SqList; Status InitList_Sq(SqList &L){ // 顺序表的初始化 L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType)); if(!L.elem)exit(OVERFLOW); L.length=0; L.listsize=LIST_INIT_SIZE; return OK; }// InitList_Sq Status ListInsert_Sq (SqList &L, int i, int e) //插入 { //在顺序表的第i个位置插入值e为的元素 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)exit(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; }// ListInsert_Sq Status ListDelete_Sq(SqList &L, int i, int &e) //删除 { //在顺序表的第i个位置删除一个元素,值在存进e中 if((i<1)||(i>L.length))return ERROR; p=&(L.elem[i-1]); e=*p; q=L.elem+L.length-1; foe(++p;p<=q;++p)*(p-1)=*p; --L.length; return OK; }// ListDelete_Sq int main( ) { ElemType y; SqList L; int i,n; InitList_Sq(L); /* 初始化线性表*/ printf("输入顺序表需存进的元素数量!\n"); scanf("%d",&n); while(n<1 || n>10) { printf("请输入1--10之间的整数!\n"); scanf("%d",&n); } /* 以上循环语句的功能是控制输入数据个数的合法性,可以修改 */ printf("依次输入存进顺序表中的数据元素:\n"); for(i=1;i<=n;i++) { scanf("%d",&y); ListInsert_Sq(L,i,y) ; } /* 以上循环语句的功能是依次输入要存进顺序表中的元素,并存进顺序表 */ printf("顺序表中的元素为:"); for(i=0; i<L.length; i++) printf("%d\t",L.elem[i]); /* 以上循环语句的功能是依次输出顺序表中的元素*/ printf("\n"); printf("输入要删除元素的位置!\n"); scanf("%d",&n); if(ListDelete_Sq(L,n,y)==OK) { printf("删除成功!"); printf("被删除的元素是: %d\n",y); } printf("顺序表中的元素为:"); for(i=0; i<L.length; i++) printf("%d\t",L.elem[i]); /* 以上循环语句的功能是依次输出顺序表中的元素*/ printf("\n"); system("pause"); return 0; } 那些错误该怎么改正????Status InitList_Sq(SqList &L){像这个就有错误。。这些跟书上的算法一样不知道为什么弄到程序里面就错了。
1 下一页