一、代码
#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct Lnode{
ElemType data;
struct Lnode *next;
}Lnode,*LinkList;
void create(LinkList &L);
void insert(LinkList &L);
void outlin(LinkList &L);
void deleter(LinkList &L);
int main(){
int cord;
LinkList L;
LinkList p;
do
{
printf("
主菜单
");
printf(" 1 建立单链表
");
printf(" 2 插入一个元素
");
printf(" 3 删除一个元素
");
printf(" 4 结束程序
");
printf("-------------------------
");
printf("请输入您的选择(1,2,3,4) :");
scanf("%d",&cord);
switch(cord)
{
case 1:
{
create(L);
outlin(L);
}break;
case 2:
{
insert(L);
outlin(L);
}break;
case 3:
{
deleter(L);
outlin(L);
}break;
case 4:exit(0);
}
}while(cord<=4);
return 0;
}
void create(LinkList &L){
int n,i;
Lnode *r,*p;
L=(LinkList)malloc(sizeof(Lnode));
L->next=NULL;
r=L;
printf("
请输入表长n=");
scanf("%d",&n);
printf("
请输入表数据:
");
for(i=0;i<n;-++i){
p=(LinkList)malloc(sizeof(Lnode));
printf("data%d=",i+1);
scanf("%d",&p->data);
p->next=NULL;
r->next=p;
r=p;
}
printf("
表创建成功
");system("pause");
}
void insert(LinkList &L){
int i,j=0,data;
Lnode *p,*s;
p=L;
printf("
请输入插入的位置 i:");
scanf("%d",&i);
printf("
插入的数据 data:");
scanf("%d",&data);
while(p&&j<i-1){
p=p->next;++j;
}
s=(LinkList)malloc(sizeof(Lnode));
s->data=data;
s->next=p->next;
p->next=s;
printf("
插入成功
");system("pause");
}
void deleter(LinkList &L){
int i,j=0,data;
Lnode *p,*q;
p=L;
printf("
请输入删除的位置 i:");
scanf("%d",&i);
while(p->next&&j<i-1){
p=p->next;
++j;
}
q=p->next;
p->next=q->next;
data=q->data;
delete q;
printf("
删除成功
");
printf("
删除的数据为%d上的数据:%d
",i,data);system("pause");
}
void outlin(LinkList &L)
{
system("cls");
int i=1;
Lnode *p;
p=L;
printf("表信息:
");
printf("位置 元素值 物理地址");
while(p->next){
p=p->next;
printf("
%2d %6d %15d",i++,p->data,p);
}
printf("
-------------------------");
}
二、执行效果