这道C语言的题目怎么做?◇高分拿哦◇

王朝知道·作者佚名  2012-09-12
窄屏简体版  字體: |||超大  
 
分類: 電腦/網絡 >> 程序設計 >> 其他編程語言
 
問題描述:

写一程序,实现两个有序链表的并操做,要求合并后的链表也是有序的。

參考答案:

先输入2个有序链表 字母,数字均可. 请连续输入 按回车结束该链表的输入

希望对楼主有帮助 能理解算法

补充下:由于匆忙 数字只支持10以内 希望楼主有更好的算法共同交流

#include<stdio.h>

typedef struct node/*单链表*/

{

char data;

struct node *next;

}node;

void W_get(node *h,char c)/*尾插函数*/

{

node *p;

p=(node*)malloc(sizeof(node));

p->data=c;

p->next=NULL;

while(h->next!=NULL)

h=h->next;

p->next=h->next;

h->next=p;

}

void change(node *a,node *b,node *c)/*求并集函数*/

{

node *q,*p;

q=c;

a=a->next;b=b->next;c=c->next;

while(a!=NULL&&b!=NULL)

{

p=(node*)malloc(sizeof(node));

if(a->data<b->data)

{

p->data=a->data;

q->next=p;

q=p;

a=a->next;

}

else if(a->data>b->data)

{

p->data=b->data;

q->next=p;

q=p;

b=b->next;

}

else

{

p->data=a->data;

q->next=p;

q=p;

a=a->next;

b=b->next;

}

}

if(a->next==NULL)

{

q->next->data=a->data;

q->next=b;

}

else

{

q->next->data=b->data;

q->next=a;

}

}

main()

{

node *first,*second,*l,*l1;

char c;

first=(node*)malloc(sizeof(node));

first->next=NULL;

second=(node*)malloc(sizeof(node));

second->next=NULL;

l=(node*)malloc(sizeof(node));

l->next=NULL;

printf("first :");

while((c=getchar())!='\n')

W_get(first,c);

printf("second :");

while((c=getchar())!='\n')

W_get(second,c);

change(first,second,l);

l1=l->next;

printf("\nNEW:");

while(l1!=NULL)

{

printf("->%c",l1->data);

l1=l1->next;

}

getch();

}

小贴士:① 若网友所发内容与教科书相悖,请以教科书为准;② 若网友所发内容与科学常识、官方权威机构相悖,请以后者为准;③ 若网友所发内容不正确或者违背公序良俗,右下举报/纠错。
 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航