#include #includetypedefstructLNode{intdata;struct LNode *next;
}LNode,*LinkList;void GetElem_L(LinkList L,int i,inte){//L为带头结点的单链表的头指针。//当第i个元素存在时,其值赋给e并返回OK,否则返回ERROR
LNode *p = L->next;int j = 1;while(p&&j
p= p->next;++j;
}
e= p->data;
printf("获取的值:%d\n",e);
}//GetElem_L
void ListInsert_L(LinkList L,int i,inte){//在带头节点的单链线性表L中第i个人位置之前插入元素e
LinkList p = L; int j=0;while(p&&jnext;++j;} //寻找第i-1个节点。
LinkList s = (LinkList)malloc(sizeof(LNode));
s->data = e;s->next = p->next;
p->next =s;
printf("插入成功。");
}//ListInsert_L
int ListDelete_L(LinkList L,int i,inte)
{
LinkList p= L;int j = 0;while(p->next&&j
p = p->next; ++j;
}
LNode*q = p->next; p->next = q->next;
e= q->data; free(q);returne;
}//ListDelete_L
void CreateList_L(LinkList *L,intn){
(*L) = (LinkList)malloc(sizeof(LNode));
(*L)->next = NULL; //建立一个带头结点的单链表
for(int i = n;i>0;--i){
LinkList p= (LinkList)malloc(sizeof(LNode)); //生成新的结点
scanf("%d",&p->data);
p->next = (*L)->next; (*L)->next =p;
}
printf("表格创建成功");
}//CreateList_L
voidMergeList_L(LinkList La,LinkList Lb,LinkList Lc){//已知单链线性表La和Lb的元素按值非递减排列。//归并La和Lb得到新的单链线性表Lc,Lc的元素也按值非递减排列。
LNode *pa = La->next; LNode *pb = pb->next;
LNode*pc = Lc->next;
Lc= pc =La;while(pa &&pb){if(pa->data <= pb->data){
pc->next = pa;pc = pa;pa = pa->next;
}else{pc->next = pb;pc = pb;pb = pb->next;}
}
pc->next = pa ? pa:pb; //插入剩余段。
free(Lb);
}//MergeList_L
voidmain()
{
LinkList L;intn;
printf("请输入数据的数量:\n");
scanf("%d",&n);
CreateList_L(&L,n);
printf("请选择你想要进行的操作:1代表插入元素;2代表获得元素;3代表删除元素;\n");inti;
scanf("%d",&i);int g=1;while(g==1)
{if(i==1){inte;
printf("请输入你们要插入的元素:\n");
scanf("%d",&e);
printf("请输入你想要插入的位置:\n");intk;
scanf("%d",&k);
ListInsert_L(L,k,e);
printf("请选择你是否要退出还是继续:1为继续;2为退出\n");
g=0;
scanf("%d",&g);
printf("请选择你想要进行的操作:1代表插入元素;2代表获得元素;3代表删除元素;\n");
i=0;
scanf("%d",&i);
}if(i==2){inte;
printf("请输入你想要获取元素的位置:\n");intk;
scanf("%d",&k);
GetElem_L(L,k,e);
printf("请选择你是否要退出还是继续:1为继续;2为退出\n");
g=0;
scanf("%d", &g);
printf("请选择你想要进行的操作:1代表插入元素;2代表获得元素;3代表删除元素;\n");
i=0;
scanf("%d", &i);
}if(i==3){inte;
printf("请输入你想要删除的位置:\n");intk;
scanf("%d",&k);
ListDelete_L(L,k,e);
printf("请选择你是否要退出还是继续:1为继续;2为退出\n");
g=0;
scanf("%d", &g);
printf("请选择你想要进行的操作:1代表插入元素;2代表获得元素;3代表删除元素;\n");
i=0;
scanf("%d", &i);
}
}return 0;
}