线性表的应用

来源:互联网 发布:在线客服系统源码 编辑:程序博客网 时间:2024/04/29 05:38
通过计算任意两个表的简单自然连接过程讨论线性表的应用。书本2.4
#include<iostream>using namespace std;#define MaxCol 10typedef struct Node1{int data[MaxCol];struct Node1 *next;}DList;typedef struct Node2{int Row,Col;DList *next;}HList;void CreateTable(HList *&h){int i,j;DList *r,*s;h=(HList *)malloc (sizeof(HList));h->next=NULL;printf("表的行数,列数:");scanf("%d%d",&h->Row,&h->Col);for(i=0;i<h->Row;i++){printf("第%d行",i+1);s=(DList *)malloc (sizeof(DList));for(j=0;j<h->Col;j++){scanf("%d",&s->data[j]);if(h->next==NULL)h->next=s;elser->next=s;r=s;}r->next=NULL;}}void DispTable (HList *h){int j;DList *p=h->next;while(p!=NULL){for(j=0;j<h->Col;j++)printf("%4d",p->data[j]);printf("\n");p=p->next;}}void LinkTable(HList *h1,HList *h2,HList *&h){int i,j,k;DList *p=h1->next,*q,*s,*r;printf("连接字段是:第一个表位序,第二个表位序:");scanf("%d%d",&i,&j);h=(HList *)malloc (sizeof(HList));h->Row=0;h->Col=h1->Col+h2->Col;h->next=NULL;while (p!=NULL){q=h2->next;while(q!=NULL){if(p->data[i-1]==q->data[j-1]){s=(DList *)malloc (sizeof(DList));for(k=0;k<h1->Col;k++)s->data[k]=p->data[k];for(k=0;k<h2->Col;k++)s->data [h1->Col+k]=q->data[k];if(h->next==NULL)h->next=s;elser->next=s;r=s;h->Row++;}q=q->next;}p=p->next;}r->next=NULL;}void main(){HList *h1,*h2,*h;printf("表1:\n");CreateTable(h1);printf("表2:\n");CreateTable(h2);LinkTable(h1,h2,h);printf("连接结果表:\n");DispTable(h);}

原创粉丝点击