宝钢统一认证平台登录:数据结构(C语言版)

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/02 06:29:48
请各位大虾帮在下看下下面的代码~

#include <stdio.h>
#include <malloc.h>
typedef char ElemType;
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
int ListInsert_L(Linklist head,int i,char e)
{
Linklist p=head;
Linklist s;
int j;
p=p->next;
for(j=1;j<1;j++)
{
if(p) p=p->next;
elst break;
}
if(!p||i<1)
{
printf("请输入正确的值\n");
return 0;
}
s=(LinkList)malloc(sizeof(LNode));
s->data=e;
s->next=p->next;
p->next=s;
return 1;
}
LinkList CreateList_L(LinkList head)
{
char temp;
LinkList p;
printf("请输入结点值(输入0结束):");
fflush(stdin);
scanf("%c",&temp);
while(temp!='0')
{
if(('A'<=temp&&temp<='Z')||('a'<=temp&&temp<='z'))
{
p=(LinkList)malloc(sizeof(LNode));
p->data=temp;
p->next=head->next;
head->next=p;
}
printf("请输入结点值(输入0结束):");
fflush(stdin);
scanf("%c",&temp);
}
return head;
}
int ListDel_L(LinkList head,int i)
{
LinkList p,tmp;
int j;
p=head->next;
tmp=head;
for(j=1;j<i;j++)
{
if(p)
{
p=p->next;
tmp=tmp->next;
}
else break;
}
if(!p||i<1)
{
printf("请输入正确的值:\n");
return 0;
}
tmp->next=p->next;
free(p);
return 1;
}
void ListPint_L(LinkList head)
{
LinkList p;
int i=0;
p=head->next;
while(p!=NULL)
{
i++;
printf("第%d个元素是:",i);
printf("%c\n",p->data);
p=p->next;
}
}
void main()
{
int i;
char cmd,e;
LinkList head;
head=(LinkList)malloc(sizeof(LNode));
head->next=NULL;
CreateList_L(head);
ListPint_L(head);
do
{
printf("i,I...插入\n");
printf("d,D...删除\n");
printf("q,Q...退出\n");
do
{
fflush(stdin);
scanf("%c",&cmd);
}while ((cmd!='d')&&(cmd!='D')&&(cmd!='i')&&(cmd!='I')&&(cmd!='q')&&(cmd!='Q'));
switch (cmd)
{
case 'i':
case'I':
printf("请输入你要插入的数据:");
fflush(stdin);
scanf("%c",&e);
printf("请输入你要插入的位置:");
scanf("%d",&i);
ListInsert_L(head,i,e);
ListPint_L(head);
break;
case 'd':
case 'D':
printf("请输入你要删除元素的位置:");
fflush(stdin);
scanf("%d",&i);
ListDel_L(head,i);
ListPint_L(head);
break;
}
}while ((cmd!='q')&&(cmd!='Q'));
}

1.类型定义有问题,将LinkList定义的都改为LNode *吧!
2.有一处else写为elst了

帮你改了一下,正在是修改后的程序:
可以编译通过,但不知道逻辑是否正确,自己检查一下哈!
#include <stdio.h>
#include <malloc.h>
typedef char ElemType;
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
int ListInsert_L(LNode *head,int i,char e)
{
LNode *p=head;
LNode *s;
int j;
p=p->next;
for(j=1;j<1;j++)
{
if(p) p=p->next;
else break;
}
if(!p||i<1)
{
printf("请输入正确的值\n");
return 0;
}
s=(LNode*)malloc(sizeof(LNode));
s->data=e;
s->next=p->next;
p->next=s;
return 1;
}
LinkList CreateList_L(LinkList head)
{
char temp;
LinkList p;
printf("请输入结点值(输入0结束):");
fflush(stdin);
scanf("%c",&temp);
while(temp!='0')
{
if(('A'<=temp&&temp<='Z')||('a'<=temp&&temp<='z'))
{
p=(LinkList)malloc(sizeof(LNode));
p->data=temp;
p->next=head->next;
head->next=p;
}
printf("请输入结点值(输入0结束):");
fflush(stdin);
scanf("%c",&temp);
}
return head;
}
int ListDel_L(LinkList head,int i)
{
LinkList p,tmp;
int j;
p=head->next;
tmp=head;
for(j=1;j<i;j++)
{
if(p)
{
p=p->next;
tmp=tmp->next;
}
else break;
}
if(!p||i<1)
{
printf("请输入正确的值:\n");
return 0;
}
tmp->next=p->next;
free(p);
return 1;
}
void ListPint_L(LinkList head)
{
LinkList p;
int i=0;
p=head->next;
while(p!=NULL)
{
i++;
printf("第%d个元素是:",i);
printf("%c\n",p->data);
p=p->next;
}
}
void main()
{
int i;
char cmd,e;
LinkList head;
head=(LinkList)malloc(sizeof(LNode));
head->next=NULL;
CreateList_L(head);
ListPint_L(head);
do
{
printf("i,I...插入\n");
printf("d,D...删除\n");
printf("q,Q...退出\n");
do
{
fflush(stdin);
scanf("%c",&cmd);
}while ((cmd!='d')&&(cmd!='D')&&(cmd!='i')&&(cmd!='I')&&(cmd!='q')&&(cmd!='Q'));
switch (cmd)
{
case 'i':
case'I':
printf("请输入你要插入的数据:");
fflush(stdin);
scanf("%c",&e);
printf("请输入你要插入的位置:");
scanf("%d",&i);
ListInsert_L(head,i,e);
ListPint_L(head);
break;
case 'd':
case 'D':
printf("请输入你要删除元素的位置:");
fflush(stdin);
scanf("%d",&i);
ListDel_L(head,i);
ListPint_L(head);
break;
}
}while ((cmd!='q')&&(cmd!='Q'));
}