#include "stdlib.h"
#include "stdio.h"
#define LIST_INIT_SIZE 100;
#define LISTINCREMENT 50;
bool InitList_Sq(SqList &L){
L.elem=(int *)malloc(LIST_INIT_SIZE *sizeof(int));
if(!L.elem) exit(1);
L.length=0;
L.listsize=LIST_INIT_SIZE ;
return 1;
}
void Create_Sq(SqList &L,int i){
for(int j=0,j<i;j++)
{scanf("%d",&L[j]);
if(L.elem[j]>100)
j--;
}
}
bool ListInsert_Sq(SqList &L, int i, int x) {
int *p;
if (i < 1 || i > L.length+1) return false;
if (L.length >= L.listsize) {
int *newbase = (int *)realloc(L.elem,
(L.listsize+LISTINCREMENT)*sizeof (int));
if (!newbase) return false;
L.elem = newbase;
L.listsize += LISTINCREMENT;
}
int *q = &(L.elem[i-1]);
for (p = &(L.elem[L.length-1]); p>=q; --p) *(p+1) = *p;
*q = x;
++L.length;
return true;
} // ListInsert_Sq
void ListDelete_Sq(SqList &L, int i) {
printf("%d",L.elem[i]);
for(int j=i;j<L.length-1;j++)
{
L.elem[j]=L.elem[j+1];
}
L.length--;
}
void printList_Sq(SqList L){
if(L.length>0){
int i=1;
printf("元素的顺序是:");
for(i=1;i<L.length+1;i++){
printf("%d",L.elem[i-1]);
}
printf("\n");
}
}
追问哥们,我调试的时候有错误啊
哥们,我调试的时候有错误啊
追答#include "stdlib.h"
#include "stdio.h"
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 50
typedef struct {
int* elem;
int length;
int listsize;
} SqList;
bool InitList_Sq(SqList &L){
L.elem=(int *)malloc(sizeof(int)*LIST_INIT_SIZE);
if(!L.elem) exit(1);
L.length=0;
L.listsize=LIST_INIT_SIZE ;
return 1;
}
void Create_Sq(SqList &L,int i){
for(int j=0;j<i;j++)
{scanf("%d",&L.elem[j]);
L.length++;
if(L.elem[j]>100)
{ j--;L.length--;}
}
}
bool ListInsert_Sq(SqList &L, int i, int x) {
int *p;
if (i < 1 || i > L.length+1) return false;
if (L.length >= L.listsize) {
int *newbase = (int *)realloc(L.elem,
(L.listsize+LISTINCREMENT)*sizeof (int));
if (!newbase) return false;
L.elem = newbase;
L.listsize += LISTINCREMENT;
}
int *q = &(L.elem[i-1]);
for (p = &(L.elem[L.length-1]); p>=q; --p) *(p+1) = *p;
*q = x;
++L.length;
return true;
} // ListInsert_Sqbool ListDelete_Sq(SqList &L, int i) {
if(i>L.length||i<=0)
return false;
printf("数值%d",L.elem[i-1]);
for(int j=i-1;j<L.length-1;j++)
{
L.elem[j]=L.elem[j+1];
}
L.length--;
return true;
}
void printList_Sq(SqList L){
if(L.length>0){
int i;
printf("元素的顺序是:\n");
for(i=1;i<L.length+1;i++){
printf("%d\n",L.elem[i-1]);
}
printf("\n");
}
}
void main()
{
int i,x;
SqList L;
while(1)
{
InitList_Sq(L);
printf("输入元素个数:");
scanf("%d",&i);
Create_Sq(L,i);
printList_Sq(L);
printf("输入插入位置:");
scanf("%d",&i);
printf("输入插入数值:");
scanf("%d",&x);
if(ListInsert_Sq(L,i,x))
printf("插入成功\n");
else
printf("插入失败\n");
printList_Sq(L);
printf("输入删除位置:");
scanf("%d",&i);
if(ListDelete_Sq(L,i))
printf("删除成功\n");
else
printf("删除失败\n");
printList_Sq(L);
system("pause");
}
}
之前没装vc,刚调试过,两端连起来看ok。