#include <stdio.h>
#include <stdlib.h>
typedef struct
{
double a;
double b;
}Elemtype;
typedef struct
{
Elemtype datas;
struct LNode* prior;
struct LNode* next;
}LNode,*LinkList;
void ListInsert(LinkList *a)
{
*a=(LNode*)malloc(sizeof(LNode));
(*a)->next=NULL;
(*a)->prior=NULL;
}
int main(int argc, char *argv[])
{
LinkList a0;
ListInsert(&a0);
for(;;)
{
puts("1.【退 出】\n2.【插 入】\n3.【从前往后查询】\n4.【从后往前查询】");
char a[500];
for(;;)
{
gets(a);
if((strcmp(a,"1")==0)||(strcmp(a,"2")==0)||(strcmp(a,"3")==0)||(strcmp(a,"4")==0))\
{
break;
}
else if(strlen(a)==0)
{
printf("内容不能为空!");
}
else
{
printf("输入错误!请重新输入!");
}
printf("重新输入的内容为:");
}
if(strcmp(a,"2")==0)
{
Elemtype e;
GetsList(&e);
int b;
double c;
puts("请输入位置");
while((scanf("%lf",&c)!=1)||((int)c!=c))
{
getchar();
fflush(stdin);
printf("输入错误!请重新输入!重新输入的内容为:");
}
b=(int)c;
ListInsert2(&a0,b,e);
}
if(strcmp(a,"3")==0)
{
PutsList(&a0);
}
if(strcmp(a,"4")==0)
{
FputsList(&a0);
}
system("pause");
if(strcmp(a,"1")==0)
{
return;
}
}
return 0;
}
void FputsList(LinkList *L)
{
LinkList a;
a=(*L)->next;
if(!a)
{
printf("无信息\n");
return;
}
while(a->next)
{
a=a->next;
}
int s=0;
while(a)
{
s++;
printf("%d:%lf\t%lf\n",s,a->datas.a,a->datas.b);
a=a->next;
}
}
void PutsList(LinkList *L)
{
LinkList a;
a=(*L)->next;
if(!a)
{
puts("无信息");
return;
}
int s=0;
while(a)
{
s++;
printf("%d:%lf\t%lf\n",s,a->datas.a,a->datas.b);
a=a->next;
}
}
void ListInsert2(LinkList *L,int a,Elemtype e)
{
LinkList k;
k=*L;
int j=0;
while(k&&(j<a-1))
{
k=k->next;
}
if((!k)||(j>a-1))
{
printf("插入失败!");
return;
}
LinkList o;
o=(LNode*)malloc(sizeof(LNode));
o->datas=e;
o->prior=k->prior;
k->prior->next=o;
o->next=k;
k->prior=o;
}
void GetsList(Elemtype *e)
{
puts("请输入第一个数");
double a0,b0;
while(scanf("%lf",&a0)!=1)
{
getchar();
fflush(stdin);
printf("输入错误,请重新输入,重新输入的内容为:");
}
puts("请输入第二个数");
while(scanf("%lf",&b0)!=1)
{
getchar();
fflush(stdin);
printf("输入错误,请重新输入,重新输入的内容为:");
}
e->a=a0;
e->b=b0;
}
file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/QQ/Temp/W68)X]ALRB$[MG[[@%25GR)66.png
代码修改如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{
double a;
double b;
}Elemtype;
typedef struct LNode
{
Elemtype datas;
struct LNode* prior;
struct LNode* next;
}*LinkList;
void FputsList(LinkList *L);
void PutsList(LinkList *L);
void ListInsert2(LinkList *L,int a,Elemtype e);
void GetsList(Elemtype *e);
void ListInsert(LinkList *a)
{
*a=(LNode*)malloc(sizeof(LNode));
(*a)->next=NULL;
(*a)->prior=NULL;
}
int main(int argc, char *argv[])
{
LinkList a0;
ListInsert(&a0);
for(;;)
{
puts("1.【退 出】\n2.【插 入】\n3.【从前往后查询】\n4.【从后往前查询】");
char a[500];
for(;;)
{
gets(a);
if((strcmp(a,"1")==0)||(strcmp(a,"2")==0)||(strcmp(a,"3")==0)||(strcmp(a,"4")==0))\
{
break;
}
else if(strlen(a)==0)
{
printf("内容不能为空!");
}
else
{
printf("输入错误!请重新输入!");
}
printf("重新输入的内容为:");
}
if(strcmp(a,"2")==0)
{
Elemtype e;
GetsList(&e);
int b;
double c;
puts("请输入位置");
while((scanf("%lf",&c)!=1)||((int)c!=c))
{
getchar();
fflush(stdin);
printf("输入错误!请重新输入!重新输入的内容为:");
}
b=(int)c;
ListInsert2(&a0,b,e);
}
if(strcmp(a,"3")==0)
{
PutsList(&a0);
}
if(strcmp(a,"4")==0)
{
FputsList(&a0);
}
system("pause");
if(strcmp(a,"1")==0)
{
return 0;
}
}
return 0;
}
void FputsList(LinkList *L)
{
LinkList a;
a=(*L)->next;
if(!a)
{
printf("无信息\n");
return;
}
while(a->next)
{
a=a->next;
}
int s=0;
while(a)
{
s++;
printf("%d:%lf\t%lf\n",s,a->datas.a,a->datas.b);
a=a->next;
}
}
void PutsList(LinkList *L)
{
LinkList a;
a=(*L)->next;
if(!a)
{
puts("无信息");
return;
}
int s=0;
while(a)
{
s++;
printf("%d:%lf\t%lf\n",s,a->datas.a,a->datas.b);
a=a->next;
}
}
void ListInsert2(LinkList *L,int a,Elemtype e)
{
LinkList k;
k=*L;
int j=0;
while(k&&(j<a-1))
{
k=k->next;
}
if((!k)||(j>a-1))
{
printf("插入失败!");
return;
}
LinkList o;
o=(LNode*)malloc(sizeof(LNode));
o->datas=e;
o->prior=k->prior;
k->prior->next=o;
o->next=k;
k->prior=o;
}
void GetsList(Elemtype *e)
{
puts("请输入第一个数");
double a0,b0;
while(scanf("%lf",&a0)!=1)
{
getchar();
fflush(stdin);
printf("输入错误,请重新输入,重新输入的内容为:");
}
puts("请输入第二个数");
while(scanf("%lf",&b0)!=1)
{
getchar();
fflush(stdin);
printf("输入错误,请重新输入,重新输入的内容为:");
}
e->a=a0;
e->b=b0;
}