#include<stdio.h>
#define Maxsize 1024
typedef struct
{
int data[Maxsize];
int last;
} sqlist,*list;
void creatList(list L) //创建链表
{
int x,i=0;
printf("请输入第%d个元素:",i+1);
scanf("%d",&x);
while(x!=-1&&i<Maxsize)
{
L->data[i]=x;
L->last=i;
i++;
printf("请输入第%d个元素:",i+1);
scanf("%d",&x);
}
}
void printList(list L) //打印链表
{
int i;
for(i=0; i<lengthList(L); i++)
printf("%d ",L->data[i]);
printf("\n");
}
void clearList(list L) //置空链表
{
L->last=-1;
}
int getList(list L,int i) //取表元素
{
return L->data[i-1];
}
int lengthList(list L) //求链表长度
{
return L->last+1;
}
int locateList(list L,int x) //定位链表元素
{
int i,flag=0;
for(i=0; i<lengthList(L); i++)
{
if(x==L->data[i])
{
printf("您需要查询的元素在第%d个\n",i+1);
flag=1;
break;
}
}
if(flag==0)
{
printf("您需要查找的元素不存在!!!\n");
return NULL;
}
else
return i+1;
}
list insertList(list L,int x,int i) //插入元素
{
int j;
if(i<1||i>lengthList(L)+1)
{
printf("输入有误!!!\n");
return L;
}
for(j=L->last; j>=i-1; j--)
{
L->data[j+1]=L->data[j];
}
L->data[i-1]=x;
++L->last;
return L;
}
list deleteList(list L,int x) //删除链表元素
{
int i,j,flag=0;
for(i=0; i<lengthList(L); i++)
{
if(L->data[i]==x)
{
flag=1;
break;
}
}
if(flag==0)
{
printf("不存在此元素!!!\n");
return L;
}
else
{
for(j=i; j<L->last; j++)
L->data[j]=L->data[j+1];
}
--L->last;
return L;
}
int main()
{
void creatList(list L); //创建链表
void printList(list L); //打印链表
int locateList(list L,int x); //定位链表元素
list insertList(list L,int x,int i); //插入元素
list deleteList(list L,int x); //删除元素
list p,n;
int x,i;
p=(list)malloc(sizeof(sqlist));
creatList(p);
printList(p);
printf("请输入您需要查找的值:");
scanf("%d",&x);
n=locateList(p,x);
printf("请输入您需要插入元素的值和位置:");
scanf("%d %d",&x,&i);
p=insertList(p,x,i);
printList(p);
printf("请输入您需要删除元素的值:");
scanf("%d",&x);
p=deleteList(p,x);
printList(p);
return 0;
}
#define Maxsize 1024
typedef struct
{
int data[Maxsize];
int last;
} sqlist,*list;
void creatList(list L) //创建链表
{
int x,i=0;
printf("请输入第%d个元素:",i+1);
scanf("%d",&x);
while(x!=-1&&i<Maxsize)
{
L->data[i]=x;
L->last=i;
i++;
printf("请输入第%d个元素:",i+1);
scanf("%d",&x);
}
}
void printList(list L) //打印链表
{
int i;
for(i=0; i<lengthList(L); i++)
printf("%d ",L->data[i]);
printf("\n");
}
void clearList(list L) //置空链表
{
L->last=-1;
}
int getList(list L,int i) //取表元素
{
return L->data[i-1];
}
int lengthList(list L) //求链表长度
{
return L->last+1;
}
int locateList(list L,int x) //定位链表元素
{
int i,flag=0;
for(i=0; i<lengthList(L); i++)
{
if(x==L->data[i])
{
printf("您需要查询的元素在第%d个\n",i+1);
flag=1;
break;
}
}
if(flag==0)
{
printf("您需要查找的元素不存在!!!\n");
return NULL;
}
else
return i+1;
}
list insertList(list L,int x,int i) //插入元素
{
int j;
if(i<1||i>lengthList(L)+1)
{
printf("输入有误!!!\n");
return L;
}
for(j=L->last; j>=i-1; j--)
{
L->data[j+1]=L->data[j];
}
L->data[i-1]=x;
++L->last;
return L;
}
list deleteList(list L,int x) //删除链表元素
{
int i,j,flag=0;
for(i=0; i<lengthList(L); i++)
{
if(L->data[i]==x)
{
flag=1;
break;
}
}
if(flag==0)
{
printf("不存在此元素!!!\n");
return L;
}
else
{
for(j=i; j<L->last; j++)
L->data[j]=L->data[j+1];
}
--L->last;
return L;
}
int main()
{
void creatList(list L); //创建链表
void printList(list L); //打印链表
int locateList(list L,int x); //定位链表元素
list insertList(list L,int x,int i); //插入元素
list deleteList(list L,int x); //删除元素
list p,n;
int x,i;
p=(list)malloc(sizeof(sqlist));
creatList(p);
printList(p);
printf("请输入您需要查找的值:");
scanf("%d",&x);
n=locateList(p,x);
printf("请输入您需要插入元素的值和位置:");
scanf("%d %d",&x,&i);
p=insertList(p,x,i);
printList(p);
printf("请输入您需要删除元素的值:");
scanf("%d",&x);
p=deleteList(p,x);
printList(p);
return 0;
}