在合并两个顺序表中,我卡在了怎么把给的两个表的文件引入部分,我想问问该怎么把文件里的数据引入顺序表啊
3条回答 默认 最新
- 技术专家团-小桥流水 2022-10-02 10:30关注
运行结果:
代码如下:
#include <iostream> #include <fstream> #include <stdlib.h> using namespace std; #define MAXSIZE 100 #define ERROR 0 typedef struct { int* elem; //记录所有的元素 int length; }sqlist; //初始化链表 void InitList(sqlist &LA) { LA.elem = new int[MAXSIZE]; LA.length = 0; } //从文本文件中读取数字,并存入顺序表 void InputList(sqlist& LA,const char* filename) { ifstream infile(filename); //读取 if(!infile.is_open()) //判断文件是否打开 { cout <<filename <<"打开失败!"<<endl; return; } //读取文件 while(!infile.eof()) { infile >> LA.elem[LA.length]; LA.length++; } infile.close(); } //采用冒泡排序算法,将链表中的元素排序 void SortList(sqlist &LA) { int i,j,t; for(i=0;i<LA.length-1;i++) { for(j=0;j<LA.length-1-i;j++) { if(LA.elem[j] > LA.elem[j+1]) //从小到大排序,如果是从大到小,把>改成<即可 { t = LA.elem[j]; LA.elem[j] = LA.elem[j+1]; LA.elem[j+1] = t; } } } } //合并两个链表,把链表合并到LC中,并按从小到大的顺序排列 void MergeList(sqlist LA,sqlist LB,sqlist &LC) { int i=0,j=0,index = 0; while(i<LA.length && j<LB.length) { if(LA.elem[i] <= LB.elem[j]) LC.elem[index++] = LA.elem[i++]; //把较小的值放入LC else if(LB.elem[i] < LA.elem[j]) LC.elem[index++] = LB.elem[j++]; } //把LA中剩余的部分放入LC while(i<LA.length) LC.elem[index++] = LA.elem[i++]; //把LB中剩余的部分放入LC while(j<LB.length) LC.elem[index++] = LB.elem[j++]; LC.length = LA.length + LB.length; } void PrintList(sqlist L) { int i = 0; for(;i<L.length;i++) { if(i<L.length -1) cout << L.elem[i] <<" "; else cout << L.elem[i] <<endl; } } int main() { sqlist LA,LB,LC; const char* file1 = "a.txt"; //第一个文件的名字 const char* file2 = "b.txt"; //第二个文件的名字 //初始化 InitList(LA); InitList(LB); InitList(LC); InputList(LA,file1); //读取文件 InputList(LB,file2); cout <<"LA排序前:"<<endl; PrintList(LA); cout <<"LB排序前:"<<endl; PrintList(LB); //顺序表排序 SortList(LA); SortList(LB); cout <<"LA排序后:"<<endl; PrintList(LA); cout <<"LB排序后:"<<endl; PrintList(LB); //合并LA和LB cout <<"合并LA和LB:"<<endl; MergeList(LA,LB,LC); PrintList(LC); system("pause"); //暂停程序,避免一闪而过 return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
- ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
- ¥16 mybatis的代理对象无法通过@Autowired装填
- ¥15 可见光定位matlab仿真
- ¥15 arduino 四自由度机械臂
- ¥15 wordpress 产品图片 GIF 没法显示
- ¥15 求三国群英传pl国战时间的修改方法
- ¥15 matlab代码代写,需写出详细代码,代价私
- ¥15 ROS系统搭建请教(跨境电商用途)
- ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。