数据结构实验,线性表的顺序存储结构的实现编写完成下列功能的函数:(1)初始化一个线性表;(2)创建

数据结构实验,线性表的顺序存储结构的实现编写完成下列功能的函数:(1)初始化一个线性表;(2)创建一个包含15个不大于100的正整数值得线性表;(3)将一个数x插在第i个元素前(x和i在程序运行时输入);(4)删除第i个元素(i在程序运行时输入),应在删除结束后输出删除元素的值;(5)输出线性表中所有的元素。(用C语言编!!)
先提前谢谢大神了!

#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_Sq

bool 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。

温馨提示:答案为网友推荐,仅供参考
相似回答