C语言数据结构 在顺序表里插入元素哪里错了啊?

#include <stdio.h> #include <malloc.h> #include <stdlib.h> #define Maxsize 100 typedef int Datatype; typedef struct{ Datatype data[Maxsize]; int length; }Sqlist; Sqlist *Create_List(Sqlist *p){ int i; p=(Sqlist *)malloc(sizeof(Sqlist)); printf("顺序表的个数:"); scanf("%d",&p->length); if(p->length>Maxsize){ printf("长度太大"); return 0; } else{ for(i=0;i<p->length;i++){ scanf("%d",&p->data[i]); } return p; } } void Insert_List(Sqlist *p,int i,int n){ int j; if(i<1||i>p->length) printf("输入位置有误"); else{ for(j=p->length;j>i;j++) p->data[j]=p->data[j-1]; p->data[i]=n; p->length++;printf("%d\n",p->length); } } void Print_List(Sqlist *p){ int i; if(p==0) printf("空表"); else{ for(i=0;i<p->length+1;i++) printf("%5d",p->data[i]); } printf("\n"); } void main(){ int a,i,n; Sqlist *l; l=Create_List(l); printf("输入插入位置和元素:"); scanf("%d%d",&i,&n); Insert_List(l,i,n); Print_List(l); }

int
Insert
(ElemType
e,
int
pos)
 { 
//在第pos个元素处插入新元素e,pos为逻辑序号
 if(pos<1||pos>length||length==size)
 
return
OVER;
//越界,出错返回
 
//从尾元素起到第pos个元素依次后移(n-pos+1次)
 for(
j=length-1,
pos--;
j>=pos
;
j--)
 
list[j+1]=list[j];
 list[pos]=e;  //插入新元素
 length++;
 return
OK;
 }
你先看看插入函数的原型把!希望可以帮到你
温馨提示:答案为网友推荐,仅供参考
相似回答