/*
时间:2016-9-29
*/
# include<stdio.h>
# include<stdlib.h>
# include<string.h>
# include "iostream"
using namespace std;
typedef struct {
int *elem;
int length;
int listsize;
}sqList;
void print_listL(sqList* L);//打印顺序表
int Insert_Sq(sqList *L,int L_location,int L_num);//插入顺序表
int InitList_Sq(sqList*L,int number);//初始化顺序表
int Delete_Sq(sqList* L,int L_location);//删除顺序表
int main(void)
{
while(1)
{
sqList l; int number,operation;
printf("please print number and operation: ");
scanf("%d %d",&number,&operation);
if (number==0&&operation==0)
break;
InitList_Sq(&l,number);
char string[64];
int l_location,l_num;
while (operation--)
{
cout<<"please print 'insert'or'delete',location and number: ";
scanf("%s %d %d",string,&l_location,&l_num);
if (strncmp(string,"insert",6)==0)
{
Insert_Sq(&l,l_location,l_num);
print_listL(&l);
continue;
}
if(strncmp(string,"delete",6)==0)
{
Delete_Sq(&l,l_location);
print_listL(&l);
continue;
}
}
if (!l.elem)exit(0);
free(l.elem);
}
system("pause");
return 0;
}
void print_listL(sqList* L)
{
for (int i = 0;i!=L->length;i++)
{
printf("%d ",L->elem[i]);
}
}
int Insert_Sq(sqList *L,int L_location,int L_num)
{
L->elem = (int*)realloc(L->elem,sizeof(int)*(L->length+1));
int i = L->length;
for (;i!=L_location-1;--i)
{
L->elem[i] = L->elem[i-1];
}
L->elem[i] = L_num;
L->length++;
L->listsize++;
return 0;
}
int InitList_Sq(sqList*L,int number)
{
L->elem = (int*)malloc(sizeof(int)*number);
if (!L->elem){printf("error");exit(0);}
L->length = number;
L->listsize = number;
for (int i = 0;i!=L->length;i++)
{
scanf_s("%d",L->elem + i);
}
return 0;
}
int Delete_Sq(sqList* L,int L_location)
{
int i = L_location - 1;
for (;i!=L->length-1;i++)
{
L->elem[i] = L->elem[i+1];
}
L->length--;
L->listsize--;
return 0;