学生信息管理链表检错 急求

[复制链接]
查看11 | 回复2 | 2009-3-30 09:09:08 | 显示全部楼层 |阅读模式
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
typedef struct list
{

char name[20];

char num[12];

char telephone[12];

int score;

struct list *next;
}list,*lnode;
lnode init()
{

lnode L=(lnode)malloc(sizeof(list));

L->next=NULL;

return L;
}

void insert(lnode L,char name[],char num[],char telephone[],int score)
{
lnode p,q=L->next;
p=(lnode)malloc(sizeof(list));
p->next=NULL;

strcpy(p->name,name);

strcpy(p->num,num);

strcpy(p->telephone,telephone);

p->score=score;

while(!q->next)

q=q->next;

q->next=p;

}
void deletel(lnode L)
{

int n=0;

char a[20],b[20];

lnode p=L,pre=NULL;
if(p->next)

{

printf("请选择:/n1:姓名删除\t2:按学号删除\t");

scanf("%d",&n);

switch(n)

{

case 1:

printf("请输入姓名");

scanf("%s",b);

for(p=L->next;strcmp(p->name,b)&&!p;pre=p,p=p->next);

pre=p->next;

free(p);

printf("删除成功");

break;

case 2:

printf("请输入学号");

scanf("%s",a);

for(p=L->next;strcmp(L->num,a)&&(!p);pre=p,p=p->next);

pre=p->next;

free(p);

printf("删除成功");

break;

default:

printf("输入错误,请重新选择");

break;

}

}

else

printf("该联系人不存在,请重新选择");


}
void display(lnode L)
{

lnode p;

for(p=L->next;p!=NULL;p=p->next)

{

printf("姓名\t学号\t电话\t学分\n");

printf("%s\t%s\t%s\t%d\n",p->name,p->num,p->telephone,&p->score);

}
}
void main()
{

int n,score,k=1;

char name[20],num[20],telephone[20];

lnode L;

L=init();

printf("*****************************请选择***************************************\n");

printf("\t\t\t1: 插入联系人\n\t\t\t2:删除联系人\n");

printf("\t\t\t3:显示所有联系人\n****************************其他键退出***********************************\n");

while(k)

{ scanf("%d",&n);

switch(n)

{


case 1:

printf("请输入姓名");

scanf("%s",name);

printf("请输入学号");

scanf("%s",num);

printf("请输入电话");

scanf("%s",telephone);

printf("请输入学分");

scanf("%d",&score);

insert(L,name,num,telephone,score);

printf("添加成功");

break;

case 2:

deletel(L);

break;

case 3:

display(L);

break;

default:

k=0;

}

}

printf("************************谢谢使用****************************");



}
运行过程中中出现问题,是怎么回事\
好像没有语法错误
能不能具体说说程序漏洞在哪儿?急求

回复

使用道具 举报

千问 | 2009-3-30 09:09:08 | 显示全部楼层
大概改了一下,其中有些错误属于指针指向不明,有些错误没考虑到循环输入,还有个别地方\n没写请仔细比对一下,看看自己哪里疏漏,才能进步对于输入非法字符问题,我没有解决,懒了^^#include"stdio.h" #include"stdlib.h" #include"string.h" typedef struct list {char name[20];char num[12];char telephone[12];int score;struct list *next; }list,*lnode; lnode init() {lnode L=(lnod...
回复

使用道具 举报

千问 | 2009-3-30 09:09:08 | 显示全部楼层
你这个程序漏洞太多了,简直没法帮你看下去了,我把操作链表错误的地方改过来了,还有很多问题,夜深了,实在困得不想看下去了。不好意思,有空再帮你看看吧。见谅#include"stdio.h" #include"stdlib.h" #include"string.h" typedef struct list { char name[20];...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行