📄 linklist.c
字号:
#define NULL 0
#include <stdio.h>
#include <string.h>
//#include <alloc.h>
struct list
{ int no; /*存放原序号*/
char data[10]; /*存放名字*/
int val; /*存放链表值*/
struct list *next;
};
struct list *createlist(int n)
{
struct list *head,*p,*q,*s;
int i;
head=malloc(sizeof(struct list));
q=head;
for(i=1;i<=n;i++)
{ s=malloc(sizeof(struct list)); /*尾插法*/
printf("第%d个名字:",i);
scanf("%s",s->data);
s->no=i;
q->next=s;
q=s;
}
q->next=NULL;
p=head;
head=head->next;
free(p);
return(head);
}
struct list *sort(head)
struct list *head;
{
struct list *head1,*p,*q,*s,*r;
head1=NULL;
p=head;
while(p!=NULL)
{ s=malloc(sizeof(struct list));
strcpy(s->data,p->data);
s->no=p->no;
s->next=NULL;
if(head1==NULL || strcmp(s->data,head1->data)<0)
{ s->next=head1;
head1=s;
}
else
{ q=head1; r=q;
while(r!=NULL && strcmp(s->data,r->data)>0)
if(strcmp(s->data,r->data)>0)
{ q=r;
r=r->next;
}
if(r==NULL)
{ q->next=s;
s->next=NULL;
}
else
{ s->next=r;
q->next=s;
}
}
p=p->next;
}
return(head1);
}
struct list *setval(head)
struct list *head;
{
struct list *p;
p=head;
while(p->next!=NULL)
{ p->val=p->next->no;
p=p->next;
}
p->val=NULL;
return(head);
}
main()
{
struct list *head,*p;
int n,i;
printf("名字个数:");
scanf("%d",&n);
head=createlist(n);
head=sort(head);
head=setval(head);
printf("实现功能1的结果:\n");
for(i=1;i<=n;i++)
{ p=head;
while(p->no!=i)
p=p->next;
printf("%5d%12s%5d\n",p->no,p->data,p->val);
}
printf("\n实现功能2的结果:\n");
p=head;
while(p!=NULL);
{ printf("%10s\n",p->data);
p=p->next;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -