#include<stdio.h>
#include<stdlib.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define ElemType int
typedef struct LNode
{
ElemType data;
struct LNode *next;
int length;
}LNode, *LinkList;
void CreateList(LinkList &L,int n)
{
LinkList p;
int i;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
for(i=n;i>0;--i)
p=(LinkList)malloc(sizeof(LNode));
scanf(&p->data);
p->next=L->next;
L->next=p;
}
int LinkInsert(LinkList &L,int i,ElemType e)
{
//int *p;
LinkList s,p;
int j=0;
while(p&&j<i-1)
{
p=p->next;
++j;
}
if(!p||j>i-1)
return 0;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;
s->next=p->next;
p->next=s;
return 1;
}
int ListDelete(LinkList &L,int i,ElemType &e)
{
//int *q,*p;
LinkList q,p;
int j=0;
while(p->next && j<i-1)
{
p=p->next;
++j;
}
if(!(p->next)||j>i-1)
return 0;
q=p->next;
p->next=q->next;
e=q->data;
free(q);
return 1;
}
/*int ListTraverse(LinkList L)
{
//输出函数
//操作结果:若顺序表非空,则输出顺序表中所有元素,否则为空操作
int k;
for(k=0;L->next!=NULL;k++)
{
printf("%5d",L->next);
L=L->next;
}
printf("\n");
return 0;
}*/
void main()
{
int i,number,k;
LinkList L;
printf("请依次输入5个整数/n");
CreateList(L,5);
/*for (k=0;k<5;k++)
{
scanf("%d",L->data);
L->length++;
}
for(i=0;i<5;i++)
{
p=(LinkList)malloc(sizeof(LNode));
scanf(&p->data);
}*/
printf("请按提示,选择操作选项:\n");
printf("1 插入元素\n");
printf("2 删除元素\n");
printf("3 退出\n");
scanf("%d",&number);
switch(number)
{
case 1 :printf("选项1\n");
LinkInsert(L,3,9);
break;
case 2 :printf("选项2\n");
ListDelete(L,4,k);
break;
case 3 :printf("选项3\n");
break;
default:printf("enter data error!\n");
}
}