线性表的逆序c语言,求助!!有序线性表的原地逆序合并 的程序,写好了出错...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include "stdafx.h"

//定义链表节点类型

struct node

{

int val;//值域

struct node * next;//指针域

};

struct node * creat_link();//声明链表生成函数

struct node * merge_link(struct node * first_link, struct node * second_link);//声明链表合并函数

int main(int argc, char* argv[])

{

//定义三个链表的头指针以及临时指针变量o

struct node * ha, * hb, * hc, * o;

//生成两个递增有序的链表A和B

ha=creat_link(); hb=creat_link();

//打印合并前的链表A

printf("\n\n链表A: HA -> ");

for(o=ha; o!=NULL; o=o->next)

{

printf("%d", o->val);

if(o->next!=NULL) printf(" -> ");

}

printf("\n\n");

//打印合并前的链表B

printf("链表B: HB -> ");

for(o=hb; o!=NULL; o=o->next)

{

printf("%d", o->val);

if(o->next!=NULL) printf(" -> ");

}

printf("\n\n");

//合并两个有序链表A和B为递减有序表C

hc=merge_link(ha, hb);

//打印并删除合并后的链表C

printf("链表C: HC -> ");

for(; hc!=NULL;)

{

printf("%d", hc->val);

if(hc->next!=NULL) printf(" -> ");

//删除C表的第一个节点

o=hc; hc=hc->next; delete o;

}

printf("\n\n");

return 0;

}

//定义链表生成函数

struct node * creat_link()

{

//声明链表头指针以及临时变量val

int val;

struct node * head=NULL, * p;

//采用头插法创建递增有序的链表

printf("\n请按递减序列输入各元素值,回车间隔,-1结束:\n");

for(;;)

{

//读入新的元素值

fflush(stdin); scanf("%d", &val);

//当元素值为-1时创建过程结束

if(val==-1) break;

//生成新节点,赋值为val

p=new struct node; p->val=val;

//将节点p头插至链表

p->next=head; head=p;

}

//返回所创建的链表头指针

return head;

}

//定义链表合并函数

struct node * merge_link(struct node * first_link, struct node * second_link)

{

//声明链表头指针以及临时指针变量q

struct node * result_link=NULL, * q;

//当A表和B表都不为空时

for(;first_link!=NULL && second_link!=NULL;)

{

//如果B表的第一个数据节点数值较小

if(first_link->val>second_link->val)

{

q=second_link;//q指向B表的第一个节点

second_link=q->next;//将节点q从B表中逻辑删除

}

else//如果A表的第一个数据节点数值较小

{

q=first_link;//q指向A表的第一个节点

first_link=q->next;//将节点q从A表中逻辑删除

}

q->next=result_link; result_link=q;//将节点q头插至表C

}

//当A表不为空时

for(;first_link!=NULL;)

{

q=first_link;//q指向A表的第一个节点

first_link=q->next;//将节点q从A表中逻辑删除

q->next=result_link; result_link=q;//将节点q头插至表C

}

//当B表不为空时

for(;second_link!=NULL;)

{

q=second_link;//q指向B表的第一个节点

second_link=q->next;//将节点q从B表中逻辑删除

q->next=result_link; result_link=q;//将节点q头插至表C

}

//返回合并的链表头指针

return result_link;

}

运行时出现“

fatal error C1083: Cannot open include file: *stdafx.h*: No such file or directory

执行 cl.exe 时出错.

” 这个东西 是什么情况?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值