有谁能给个把线性表A和B按降序放到C中的程序吗

[复制链接]
查看11 | 回复0 | 2015-4-18 18:02:47 | 显示全部楼层 |阅读模式
#include "stdio.h"#include "stdlib.h"#include "malloc.h"#define NULL 0struct List{ int data; struct List *next;}List;struct List * InitList(){ struct List *head,*p,*q; int d; head=(struct List *)malloc(sizeof(struct List)); head->next=NULL; p=head; scanf("%d",&d); while(d>0) {q=(struct List *)malloc(sizeof(struct List));q->next=NULL;q->data=d;p->next=q;p=p->next;scanf("%d",&d); } return head; }void ListChooseSort(struct List *head){ structList *p,*q;int t; if(head->next!=NULL) {for(p=head->next;p->next;p=p->next) for(q=p->next;q;q=q->next)
if(q->datadata)
{
t=p->data;
p->data=q->data;
q->data=t;
} }}struct List * UniteList(struct List *a,struct List *b){ struct List *U_head,*p,*q,*s; U_head=(struct List *)malloc(sizeof(struct List)); U_head->next=NULL; p=a->next; q=b->next; s=U_head; while(p&&q) {if(p->data>q->data){ s->next=q; q=q->next;}else { s->next=p; p=p->next;}s=s->next; } if(p==NULL)s->next=q; else s->next=p; return U_head; }void ListPrint(struct List *head){ structList *p; p=head->next; printf("\n\n"); while(p) {printf("%5d",p->data);p=p->next; } printf("\n\n");}void main (){ struct List *a_head,*b_head,*Unite_head; printf("\n创建链表a:\n\n"); a_head=InitList(); printf("\n链表a:"); ListPrint(a_head); system("pause"); system("cls"); printf("\n创建链表b:\n\n"); b_head=InitList(); printf("\n链表b:"); ListPrint(b_head); system("pause"); system("cls"); ListChooseSort(a_head); printf("\n递增排序后的链表a:"); ListPrint(a_head); ListChooseSort(b_head); printf("递增排序后的链表b:"); ListPrint(b_head); Unite_head=UniteList(a_head,b_head); printf("合并后的链表为:"); ListPrint(Unite_head);}
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行