当前位置:   article > 正文

数据结构之线性表的应用——完整代码实现_线性表的实现代码

线性表的实现代码

一、线性表的合并(顺序表实现)

问题描述:

  1. #include<iostream>
  2. using namespace std;
  3. const int MaxSize = 100;
  4. typedef struct{
  5. int *data;
  6. int length;
  7. }SeqList;
  8. //顺序表初始化
  9. void InitList(SeqList &L)
  10. {
  11. L.data = new int[MaxSize];
  12. L.length=0;
  13. }
  14. //创建顺序表
  15. void CreatList(SeqList &L)
  16. {
  17. int n;
  18. cout<<"创建顺序表元素个数:" ;
  19. cin>>n;
  20. L.length = n;
  21. for(int i=0;i<n;i++){
  22. cin>>L.data[i];
  23. }
  24. }
  25. //打印顺序表
  26. void PrintList(SeqList L){
  27. for(int i=0;i<L.length;i++)
  28. {
  29. cout<<L.data[i]<<" ";
  30. }
  31. cout<<endl;
  32. }
  33. //顺序表的合并-无序
  34. void MergeList(SeqList &La,SeqList &Lb)
  35. {
  36. for(int i=0;i<Lb.length;i++)
  37. {
  38. int flag=1;
  39. for(int j=0;j<La.length;j++)
  40. {
  41. if(Lb.data[i]==La.data[j])
  42. {
  43. flag=0;
  44. }
  45. }
  46. if(flag==1){
  47. La.data[La.length++]=Lb.data[i];
  48. }
  49. }
  50. }
  51. int main()
  52. {
  53. SeqList Lista,Listb;
  54. InitList(Lista);
  55. InitList(Listb);
  56. cout<<"ListA:";
  57. CreatList(Lista);
  58. cout<<"ListB:";
  59. CreatList(Listb);
  60. cout<<"合并线性表:";
  61. MergeList(Lista,Listb);
  62. PrintList(Lista);
  63. return 0;
  64. }

 程序运行结果:

 

二、有序表的合并(链表实现) 

问题描述:

 代码实现如下:

  1. #include<iostream>
  2. using namespace std;
  3. typedef struct Node{
  4. int data;
  5. struct Node* next;
  6. }LinkList;
  7. //尾插创建单链表
  8. struct Node* creatlist(){
  9. Node* head = new Node;
  10. head->next = nullptr;
  11. Node* rear = head;
  12. Node* s = nullptr;
  13. int n;
  14. cout<<"创建链表的长度:";
  15. cin>>n;
  16. cout<<"输入链表的值:" ;
  17. for(int i=0;i<n;i++){
  18. Node* s = new Node;
  19. cin>>s->data;
  20. rear->next = s;
  21. rear = s;
  22. }
  23. rear->next = nullptr;
  24. return head;
  25. }
  26. //打印单链表
  27. void printfList(Node *head){
  28. Node* pre = head->next;
  29. while(head){
  30. cout<<pre->data<<" ";
  31. pre = pre->next;
  32. }
  33. cout<<endl;
  34. }
  35. //用链表实现有序表的合并
  36. Node* MergeList(Node* head1,Node* head2){
  37. Node *la,*lb,*lc;
  38. la = head1->next;
  39. lb = head2->next;
  40. Node* dummyhead = new Node();
  41. Node* tail = dummyhead;
  42. while(la && lb ){
  43. if(la->data < lb->data ){
  44. tail->next = la;
  45. tail = la;
  46. la = la->next;
  47. }else{
  48. tail->next = lb;
  49. tail = lb;
  50. lb = lb->next;
  51. }
  52. }
  53. if(la){
  54. tail->next = la;
  55. }
  56. if(lb){
  57. tail->next = lb;
  58. }
  59. return dummyhead;
  60. }
  61. int main(){
  62. Node* List1head = creatlist();
  63. Node* List2head = creatlist();
  64. Node* ret = MergeList(List1head,List2head);
  65. printfList(ret);
  66. return 0;
  67. }

程序运行结果:


最近开始复习前面的知识,没有时间刷leetcode的题目(想一道好费劲

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/700654
推荐阅读
相关标签