4.线性表的合并

 1 
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 #include <malloc.h>
 5 
 6 #define OK   1
 7 #define ERROR  0
 8 #define TRUE 1
 9 #define FALSE 0
10 
11 #define ElemType int
12 #define    MAXSIZE  100         /*此处的宏定义常量表示线性表可能达到的最大长度*/
13 typedef  struct
14 
15     ElemType  elem[MAXSIZE]; /*线性表占用的数组空间*/
16     int  last;                          /*记录线性表中最后一个元素在数组elem[ ]中的位置(下标值),空表置为-1*/
17 }SeqList;
18 
19 void    merge(SeqList *LA,  SeqList *LB,  SeqList *LC)
20 {
21     int i,j,k;
22     i=0;j=0;k=0;
23     while(i<=LA->last&&j<=LB->last)
24         if(LA->elem[i]<=LB->elem[j])
25         {
26             LC->elem[k]= LA->elem[i];
27             i++
28             k++;
29         }
30         else
31         {
32             LC->elem[k]=LB->elem[j];
33             j++
34             k++;
35           }
36     while(i<=LA->last)         /*当表LA有剩余元素时,则将表LA余下的元素赋给表LC*/
37     {
38         LC->elem[k]= LA->elem[i];
39         i++
40         k++;
41     }
42     while(j<=LB->last)         /*当表LB有剩余元素时,则将表LB余下的元素赋给表LC*/    
43     {
44         LC->elem[k]= LB->elem[j];
45         j++
46         k++;
47     }
48     LC->last=LA->last+LB->last+1;   /*LC的长度等于两个栈的长度+1*/
49 }
50 
51 
52 void main()
53 {
54     SeqList *la,*lb,*lc;
55     int r;
56     int i;
57     
58     la=(SeqList*)malloc(sizeof(SeqList));
59     printf("please input the stack A 's length:");
60     scanf("%d",&r);
61     la->last = r-1;
62     printf("please enter the numbers of stack A:\n");
63     for(i=0; i<=la->last; i++)
64     {
65         scanf("%d",&la->elem[i]);
66     }
67     
68     
69     lb=(SeqList*)malloc(sizeof(SeqList));
70     printf("please input the stack B 's length:");
71     scanf("%d",&r);
72     lb->last = r-1;
73     printf("please enter the numbers of stack B:\n");
74     for(i=0; i<=lb->last; i++)
75     {
76         scanf("%d",&lb->elem[i]);
77     }
78 
79     lc=(SeqList*)malloc(sizeof(SeqList));
80     merge(la,lb,lc);
81     printf("Join the two stacks is:\n");
82     for(i=0; i<=lc->last; i++)
83     {
84         printf("%d  ",lc->elem[i]);
85     }
86 }
87 
posted @ 2009-07-15 00:33  清山博客  阅读(1123)  评论(0编辑  收藏  举报