zoukankan      html  css  js  c++  java
  • 线性表相关操作,不全但会慢慢增加

     1 #include<iostream>
     2 using namespace std;
     3 
     4 typedef struct Node{
     5     int data;
     6     struct Node *next;
     7 }Node;
     8 
     9 //头插法建立链表
    10 Node *createListFromHead(int a[], int n){
    11     Node *A = new Node();
    12     A->next = NULL;
    13     for(int i=0; i<n; i++){
    14         Node *p = new Node();
    15         p->data = a[i];
    16         p->next = A->next;
    17         A->next = p;
    18     }
    19     return A;
    20 } 
    21 
    22 //尾插法建立链表
    23 Node *createListFromEnd(int a[], int n){
    24     Node *A = new Node();
    25     A->next = NULL;
    26     Node *p = A;
    27     for(int i=0; i<n; i++){
    28         Node * q = new Node();
    29         q->next = NULL;
    30         q->data = a[i];
    31         p->next = q;
    32         p = q;
    33     } 
    34     return A;
    35 } 
    36 
    37 void show(Node *List){
    38     Node *p = List->next;
    39     while(p){
    40         cout<<p->data<<endl;
    41         p = p->next;
    42     }
    43 }
    44 
    45 void uni(Node *A, Node *B){
    46     Node *Apre = A, *Anow = A->next;
    47     Node *Bnow = B->next;
    48     while(Anow && Bnow){
    49         while(Bnow && Bnow->data < Anow->data){
    50             Bnow = Bnow->next;
    51         }
    52         if(Bnow && Bnow->data != Anow->data){
    53             Apre->next = Anow->next;
    54             
    55         }else{
    56             if(!Bnow){
    57                 break;
    58             }
    59             Apre = Apre->next;
    60         }
    61         Anow = Anow->next;
    62         
    63     }
    64     
    65         Apre->next = NULL;
    66 //    cout<<Apre->data<<endl<<endl;
    67 }
    68 
    69 void Merge(Node *A, Node *B){
    70     Node *Apre = A, *Anow = A->next;
    71     Node *Bnow = B->next;
    72     while(Anow && Bnow){
    73         while(Anow && Anow->data < Bnow->data){
    74             Anow = Anow->next;
    75             Apre = Apre->next;
    76         }
    77         Node *Bc = Bnow;
    78         Bnow = Bnow->next;
    79         Bc->next = Apre->next;
    80         Apre->next = Bc;
    81         Apre = Apre->next;
    82     }
    83     Apre->next = Bnow;
    84 }
    85 
    86 int main(){
    87     int a[]={1,2,4,6,8,9,11,13,17};
    88     int b[]={0,3,5,6,10};
    89 //    Node *A = createListFromHead(a, 9);
    90     Node *A = createListFromEnd(a, 9);
    91     Node *B = createListFromEnd(b,5);
    92 //    uni(A, B);
    93     Merge(A, B);
    94     show(A);
    95 //    cout<<endl;
    96 //    show(B);
    97 }
  • 相关阅读:
    VintaSoft Barcode.NET SDK专业的条形码读写控件详细介绍
    数据库查询构建控件集Active Query Builder
    linux系统下集成开发工具选择
    linux常用命令
    ubuntu 10.10绚丽桌面效果及常用快捷键
    Restful服务1
    EasyJF简易的j2EE框架
    erlang学习1
    netbeans下 xdebug调试php
    介绍几个开源的网站
  • 原文地址:https://www.cnblogs.com/zhishoumuguinian/p/11755180.html
Copyright © 2011-2022 走看看