#include<stdio.h>
#include<malloc.h>
typedef struct Node
{
int date;
struct Node *next;
}Node;
Node *lnitlist(Node *first)
{
first=(Node *)malloc(sizeof(Node));
first->next=NULL;
return first;
}
Node *creat(Node *first)
{
Node *s;
int n,i;
printf("请输入要输入数据的个数\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("请输入第%d个数据:",i+1);
s=(Node *)malloc(sizeof(Node));
scanf("%d",&s->date);
s->next=first->next;
first->next=s;
}
return first;
}
void printlist(Node *first)
{
Node *p;
p=first->next;
while(p!=NULL)
{
printf("%d",p->date);
p=p->next;
}
printf("\n");
}
void get(Node *first)
{
Node *p;
int count,ch;
count=1;
printf("请输入你要查找的位置:\n");
scanf("%d",&ch);
p=first->next;
while(p!=NULL&&count<ch)
{
p=p->next;
count++;
}
if(p==NULL){printf("没有你所查找的数据,\n");}
else
printf("你所查找位置的数据为%d:\n",p->date);
}
void lnsert(Node *first)
{
Node *p;
Node *s;
int ch,cho;
int count=0;
printf("请输入你要插入的位置和数据:\n");
scanf("%d,%d",&ch,&cho);
p=first;
count=0;
while(p!=NULL&&count<ch-1)
{
p=p->next;
count++;
}
if(p==NULL)
{
printf("无法在此位置插入,\n");
}
else
{
s=(Node *)malloc(sizeof(Node));
s->date=cho;
s->next=p->next;
p->next=s;
}
}
void Delete(Node *first)
{
Node *p;
Node *q;
int count=0;
int cho,ch;
p=first;
printf("请输入你要删除的位置:\n");
scanf("%d",&cho);
while(p!=NULL&&count<cho-1)
{
p=p->next;
count++;
}
if(p==NULL||p->next==NULL)
{
printf("数据库无此数据,\n");
}
else
{
q=p->next;
ch=q->date;
p->next=q->next;
free(q);
printf("你要删除位置的数据为%d\n",ch);
}
}
main()
{
int t;
Node *L=NULL;
L=lnitlist(L);
do
{
printf("0.退出\n1.输入数据\n.2遍历数据\n3.按位查找\n4.插入数据\n5.删除数据\n");
printf("请输入1-5进行选择\n");
scanf("%d",&t);
switch(t)
{
case 0:break;
case 1:
L=creat(L);
break;
case 2:
printlist(L);
break;
case 3:
get(L);
break;
case 4:
lnsert(L);
break;
case 5:
Delete(L);
break;
default:printf("无此次操作!!!\n");break;
}
}while(t!=0);
}