| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 475 人关注过本帖
标题:[求助]链表看看错哪里了啊。
只看楼主 加入收藏
起点线
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2006-12-7
收藏
 问题点数:0 回复次数:5 
[求助]链表看看错哪里了啊。

一个输入函数,输出函数,删除函数。不知道错哪里了

#include <stdio.h>
#include <stdlib.h>
#define S struct worker
#define LEN sizeof(struct worker)
struct worker
{
int num;
char name[10];
int pay;
S *next;
};

/******删除函数******/

S *del(S *head,int n)
{
S *p,*q;
p=q=head;
while(n!=p->num&&p->next!=0)
{
q=p; p=p->next;
}
if(n==p->num)
{
if(p==head) head=p->next;
else q->next=p->next;
}
free(p);
return head;
}

/******输入******/

S *input(void)
{
S *p,*q,*head;
p=q=head=(S*)malloc(LEN);
scanf("%d",&p->num);
getch();
scanf("%s",p->name);
getch();
scanf("%d",&p->pay);
while(1)
{
p=(S*)malloc(LEN);
scanf("%d",&p->num);
if(p->num==0) break;
getch();
scanf("%s",p->name);
getch();
scanf("%d",&p->pay);
q=p;
q->next=p;
}
return head;
}

/******输出******/

void out(S *p)
{
while(p!=0)
{
printf("%d %s %d\n",p->num,p->name,p->pay);
p=p->next;
}
}

/******主函数******/

main()
{
int n;
S *head;
head=input();
out(head);
printf("input n ");
scanf("%d",&n);
head=del(head,n);
out(head);
}

搜索更多相关主题的帖子: 链表 
2007-05-13 21:19
无语的我
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2006-4-25
收藏
得分:0 

S *input(void)
{
S *p,*q,*head;
p=q=head=(S*)malloc(LEN);
scanf("%d",&p->num);
getch();
scanf("%s",p->name);
getch();
scanf("%d",&p->pay);
while(1)
{
p=(S*)malloc(LEN);
scanf("%d",&p->num);
if(p->num==0) break;
getch();
scanf("%s",p->name);
getch();
scanf("%d",&p->pay);
q=p; //q->next=p;
q->next=p; //q=p;
}
return head;
}


2007-05-13 21:31
无语的我
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2006-4-25
收藏
得分:0 


嘿嘿.不知道改得对不对.

#include <stdio.h>
#include <stdlib.h>
#define S struct worker
#define LEN sizeof(struct worker)
struct worker
{
int num;
char name[10];
int pay;
S *next;
};

/******删除函数******/

S *del(S *head,int n)
{
S *p,*q;
p=q=head;
while(n!=p->num && p->next!=NULL)
{
q=p;
p=p->next;
}
if(p)
{
if(p==head)
head=p->next;
else
q->next=p->next;
}
free(p);
return head;
}

/******输入******/

S *input(void)
{
S *p,*q,*head;
p=q=head=(S*)malloc(LEN);
p->next=NULL;
scanf("%d",&p->num);
getch();
scanf("%s",p->name);
getch();
scanf("%d",&p->pay);
while(1)
{
p=(S*)malloc(LEN);
scanf("%d",&p->num);
if(p->num==0) break;
getch();
scanf("%s",p->name);
getch();
scanf("%d",&p->pay);
q=p;
q->next=p;
}
return head;
}

/******输出******/

void out(S *p)
{
while(p!=NULL)
{
printf("%d %s %d\n",p->num,p->name,p->pay);
p=p->next;
}
}

/******主函数******/

main()
{
int n;
S *head;
head=input();
out(head);
printf("input n ");
scanf("%d",&n);
head=del(head,n);
out(head);
}


2007-05-13 21:36
taojingwen
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2007-5-5
收藏
得分:0 

个人觉得,删除和输出都应该没有错,输入的函数,由于水平有限,不是特别清楚


I Believe I Can Fly
2007-05-14 00:02
起点线
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2006-12-7
收藏
得分:0 
感谢2楼..  3楼的试了不行哦  我用的是TC2.0

2007-05-14 20:06
acmilann
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-5-13
收藏
得分:0 

#include <stdio.h>
#include <stdlib.h>
#define S struct worker
#define LEN sizeof(struct worker)
struct worker
{
int num;
char name[10];
int pay;
S *next;
};

/******删除函数******/

S *del(S *head,int n)
{
S *p,*q;
p=q=head;
while(n!=p->num&&p->next!=NULL)
{
q=p; p=p->next;
}
if(n==p->num)
{
if(p==head) head=p->next;
else q->next=p->next;
free(p);
}

return head;
}

/******输入******/

S *input(void)
{
S *p,*q,*head;
if((p=q=head=(S*)malloc(LEN))==NULL){printf("erorr");return 0;}
scanf("%d",&p->num);
getchar();
scanf("%s",p->name);
getchar();
scanf("%d",&p->pay);
while(1)
{
if((p=(S*)malloc(LEN))==NULL){printf("erorr");return 0;}
scanf("%d",&p->num);
if(p->num==0){ free(p);q->next=NULL;break;}
getchar();
scanf("%s",p->name);
getchar();
scanf("%d",&p->pay);
q->next=p;
q=p;
}
return head;
}

/******输出******/

void out(S *p)
{
while(p!=NULL)
{
printf("%d %s %d\n",p->num,p->name,p->pay);
p=p->next;
}
}

/******主函数******/

int main()
{
int n;
S *head;
head=input();
out(head);
printf("input n ");
scanf("%d",&n);
head=del(head,n);
out(head);
return 0;
}
根据你的改得,不是很完善!


学习编程的秘诀是:编程,编程,再编程
2007-05-14 20:50
快速回复:[求助]链表看看错哪里了啊。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020470 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved