69,381
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct Node
{
char cNum[30];
int score;
struct Node *pNext;
}node;
//创建链表
node* Createlist(node *Head,int n)
{
node *pNew,*pTemp;
int cnt=0;
Head=NULL;
pNew=pTemp=(node *)malloc(sizeof(node));
if (!pNew)
exit(0);
while(cnt < n)
{
if(cnt==0)
{
scanf("%s %d",pNew->cNum,&pNew->score);
pNew->pNext=NULL;
//pTemp=pNew;
Head=pTemp;
cnt++;
}
else
{
pNew=(node *)malloc(sizeof(node));
scanf("%s %d",pNew->cNum,&pNew->score);
pNew->pNext=NULL;
pTemp->pNext=pNew;
pTemp=pNew;
cnt++;
}
}
return Head;
}
//合并链表
node* Combinelist(node* Head1,node* Head2)
{
node* Head=Head1;
while(Head1->pNext != NULL)
{
Head1=Head1->pNext;
}
Head1->pNext=Head2;
return Head;
/*
node* Head=Head1;
node* pTemp=(node *)malloc(sizeof(node));
while(Head1!=NULL)
{
pTemp=Head1;
Head1=Head1->pNext;
}
pTemp->pNext=Head2;
free(Head1);
return Head;
*/
}
//排序链表
node* sort(node* Head,int n,int m)
{
int i,j;
int cnt=n+m;
node* pTemp;
char Tempnum[30];
int Tempscore;
node * Newhead=Head;
pTemp=(node *)malloc(sizeof(node));
for(i=0;i<cnt-1;i++)
{
for(j=0;j<cnt-1-i;j++)
{
pTemp=Head;
Head=Head->pNext;
if(strcmp(pTemp->cNum,Head->cNum)>0)
{
strcpy(Tempnum,Head->cNum);
Tempscore=Head->score;
strcpy(Head->cNum,pTemp->cNum);
Head->score=pTemp->score;
strcpy(pTemp->cNum,Tempnum);
pTemp->score=Tempscore;
}
}
Head=Newhead;
}
return Newhead;
}
//输出链表
node* Printlist(node* Head)
{
node * Newhead=Head;
while(Head!=NULL)
{
printf("%s %d\n",Head->cNum,Head->score);
Head=Head->pNext;
}
return Newhead;
}
int main()
{
node *Head1=NULL;
node *Head2=NULL;
node *Head=NULL;
int N,M;
scanf("%d %d",&N,&M);
//getchar();
Head1=Createlist(Head1,N);
Printlist(Head1);
Head2=Createlist(Head2,M);
Printlist(Head2);
Head=Combinelist(Head1,Head2);
Head=sort(Head,N,M);
Printlist(Head);
return 0;
}