/*
功能:顺序线性表的创建插入
作者:剑驰
时间:2009/10/20
*/
#include<stdio.h>
#include<malloc.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct{
int *elem;
int length;
int listsize;
}sqlist;
int InitList(sqlist *l)
{
l->elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
if(!l->elem)
{
printf("分配失败!");
exit(-1);
}
l->length=0;
l->listsize=LIST_INIT_SIZE;
return 0;
}
int CreateList(sqlist *l,int len)
{
int i;
int e;
InitList(l);
printf("输入顺序表元素:");
for(i=0;i<len;i++)
{
scanf("%d",&e);
l->elem[i]=e;
l->length++;
}
return 0;
}
int ListInset(sqlist *l,int e,int count)
{
int i;
if(count>l->length|count<=0)
{
printf("该位置不能插入元素!/n");
exit(-1);
}
for(i=l->length;i>=count;i--)
{
l->elem[i]=l->elem[i-1];
}
l->elem[count-1]=e;
l->length++;
return 0;
}
int PrintList(sqlist l)
{
int i;
for(i=0;i<l.length;i++)
printf("%-5d",l.elem[i]);
return 0;
}
void main()
{
int len;
sqlist list;
int i;
int e;
int count;
printf("输入顺序表长度:");
scanf("%d",&len);
CreateList(&list,len);
PrintList(list);
printf("你需要插入元素");
scanf("%d",&e);
printf("插入元素位置:");
scanf("%d",&count);
ListInset(&list,e,count);
PrintList(list);
}