/*建立链表*/ struct node *creat(int n) { int x, i; struct node *head, *p, *r; head=(struct node*)ma

请那位高手用中文翻译一下这段代码... 请那位高手用中文翻译一下这段代码 展开
 我来答
xntpii
2010-12-08 · TA获得超过1150个赞
知道小有建树答主
回答量:983
采纳率:50%
帮助的人:780万
展开全部
我想我们俩可能一个级别的!给你一个我写的,程序功能里有建表,删除,去重等功能,你只看建立的就好,也许对你会有帮组,链表这块其实不很难的。
#include <stdio.h>
#include <stdlib.h>

struct node
{
int num;
struct node *next;
};
/*建立链表*/
struct node *creat(int n)
{
int x, i;
struct node *head, *p, *r;

head=(struct node*)malloc(sizeof(struct node));
r=head;
printf("请输入数字\r\n");
for(i=0; i<n; i++)
{
scanf("%d", &x);
p=(struct node*)malloc(sizeof(struct node));
p->num=x;
r->next=p;
r=p;
}
r->next=NULL;
return(head);
}
/*删除重复结点*/
void delet(struct node *head)
{
struct node *p, *q, *r;

p=head->next;
while(p!=NULL)
{
q=p;
while(q->next!=NULL)
{
r=q->next;
if(r->num==p->num)
{
if(r->next!=NULL)
{
q->next=r->next;
free(r);
}
else
{
q->next=NULL;
free(r);
}
}
else
{
q=r;
}
}
p=p->next;
}
}
/*排序*/
void sort(struct node *head)
{
struct node *p, *q, *small;
int temp;

for(p=head->next; p->next!=NULL; p=p->next)
{
small=p;
for(q=p->next; q!=NULL ;q=q->next)
{
if(q->num<small->num)
small=q;
}
if(small!=p)
{
temp=small->num;
small->num=p->num;
p->num=temp;
}
}
}
/*输出*/
void output(struct node *head)
{
struct node *pt;
pt=head->next;
while(pt!=NULL)
{
printf("%d\r\n", pt->num);
pt=pt->next;
}
}

main()
{
int n;
struct node *head;

printf("输入数字的个数n\r\n");
scanf("%d", &n);
head=creat(n);

printf("输入的数字\r\n");
output(head);

delet(head);
printf("删除重复结点后输出数字\r\n");
output(head);

sort(head);
printf("排序后输出数字\r\n");
output(head);

free(head);
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式