十字链表
时间:2014-06-05 18:25:08
收藏:0
阅读:272
-
十字链表的语言描述
-
基本运算的算法——建立稀疏矩阵的十字链表的算法、输出稀疏矩阵十字链表的算法
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147#include<iostream>usingnamespacestd;template<classT>classshizi{private:structNode{inti;intj;T data;Node * right;Node * down;Node():right(NULL),down(NULL) {}Node(intx,inty , T a){i = x;j = y;data = a;right = NULL;down = NULL;}};Node *rhead;Node *chead;Node *rcur;Node *ccur;introw,col,number;public:shizi(intx,inty ,intnum){row = x;Node * head1 =newNode();rhead = head1;rcur = head1;for(inti = 0 ; i < row ; i++)//建立一列空的行节点{Node * p =newNode();rcur->down = p;rcur = rcur -> down;}col = y;Node * head2 =newNode();chead = head2;ccur = head2;for(inti = 0 ; i < col ; i++)//建立一行空的列节点{Node * p =newNode();ccur -> right = p;ccur = ccur -> right;}number = num;}intreturnx()//返回x值{returnrcur->i;}intreturny()//返回y值{returnrcur->j;}T returndata()//返回data值{returnrcur->data;}voidcharu()//插入{for(inti = 0 ; i < number ; i++){cout<<"please input x y data"<<endl;intx1,y1;T data1;cin>>x1>>y1>>data1;rcur = rhead;ccur = chead;//行---建立节点Node * p =newNode(x1,y1,data1);for(inti = 0 ; i < x1 ; i++ )//找到要插入的行{rcur = rcur -> down;}for(inti = 0 ; i < y1 ; i++)//找到要插入的列{if(rcur -> right == NULL)//如果列的元素为空{rcur -> right = p;break;}else{rcur = rcur -> right;}}//列指针的连接for(inti = 0 ; i < y1 ; i++){ccur = ccur -> right;}for(inti = 0 ; i < x1 ; i++){if(ccur -> down == NULL ){ccur -> down = p;break;}else{ccur = ccur -> down;}}}}voidprint()//打印{ Node * tem = rhead;rcur = rhead;tem = tem->down;rcur = rcur->down;for(inti = 0 ; i < row ; i++)//按行打印,遍历一行所有元素,然后移到下一行{while(rcur!=NULL){if(returnx()!=0&&returny()!=0)cout<<returnx()<<" "<<returny()<<" "<<returndata()<<endl;rcur = rcur -> right;}rcur = tem -> down;tem = tem -> down;}}};intmain(){intx,y,n;cout<<"please input row col number"<<endl;cin>>x>>y>>n;shizi <int> dusk(x,y,n);dusk.charu();dusk.print();}
评论(0)