首页 > 编程知识 正文

算法与数据结构,求线性变换的核和值域的例题

时间:2023-05-06 13:24:07 阅读:49205 作者:361

线表2021-9-14【数据结构/hhdlr】【顺序表】【代码实现算法2.1-2.7】2021-9-18【数据结构/hhdlr】【单链表】【代码实现算法2.8-2.12】2021-9-18【 hhdlr】【双向链表】【代码实现算法2.18-2.19】2021-9-19 hhdlr】【第一节点的线性表】【代码实现算法2.20-2.21】2021-9-19【数据结构/hhdlr】【一元乘法】【代码实现算法2.22-2.23】2021-9-23【数据结构】【单链表反置】2021-9-23【数据结构】【顺序表反置】堆积器hhdlr】【顺序链式堆栈迷宫求解公式评估】hhdlr】【链式队列】2021-9-28【数据结构/HDLR】【循环队列】串2021-10-5【数据结构/【HDLR】【字符串的定长顺序存储表示】【代码实现算法4.1-4.3实现】2021-10-5【 hhdlr】【字符串的堆分配内存表示】【代码实现算法4.4实现】二叉树2021-4 ! 300多行,码字很难,请夸奖!

# include bits/stdc.husingnamespacestd; # defineelemtypeint # definestatusinttypedefstructlnode { elemtype data; 结构节点*下一步; } *链接,*位置; 类型结构{ link head,tail; int len; }链接列表; 分配statusmakenode(linkp,ElemType e )//p指示的值为e的节点,并返回OK; 如果分配失败,则错误p=新节点; p-data=e; if(p )返回1; else return 0; }voidFreenode(linkp ) /释放p指向的节点delete p; p=空值; }statusinitlist(linklistL ) (/初始化声明为链表L L.head=new LNode的链表; l .头下一个=null; L.tail=L.head; L.len=0; if(l.head ) { cout )初始化成功) endl; 返回1; }else return 0; }销毁}statusdestroylist(linklistL ) /链表L ClearList(L ) l; delete L.head; L.head=NULL; L.tail=NULL; if (! l.head (返回1; else return 0; }statusclearlist(linklistL ) /清空当前链表l,初始状态链表Link p=L.head-next; while(p ) { L.head-next=p-next; delete p; p=空值; L.len--; p=L.head-next; (if ) L.head-next==null ) { return 1; }else return 0; }statusinsfirst(linkh,Link s )//在头部节点的位置插入新节点,h指向头部,s指向新节点s-next=h-next; h-next=s; 返回1; }statusDelfirst(linkh,Link q ) /删除头部节点q=h-next; if(q ) { h-next=q-next; 返回1; }else return 0; }statusappend(linklistL,Link s )//在链表中插入数据,在s之后的一个或多个节点中插入链表的末尾) /,然后在链表的tail指针L.tail-next=s wile(L.Tail-Next!=空)

{ L.len++; L.tail = L.tail->next; } return 1;}Status Remove(LinkList &L, Link &q){ //删除链表尾节点元素,由q返回 if(!L.head){ cout << "线性链表不存在" << endl; return 0;} q = L.head; while(q->next!=L.tail){ q = q->next; } L.tail = q; q = q->next; L.tail->next = NULL; L.len--;delete q; q = NULL; return 1;}Status InsBefore(LinkList &L, Link &p, Link s){ //将元素插入由p指定的位置的前一个位置,并修改p指向新的节点 Link q = L.head; if(!L.head){ cout << "线性链表不存在" << endl; return 0; }while(q->next!=p){ q = q->next; } q->next = s; s->next = p; p = s; L.len++;return 1;}Status InsAfter(LinkList &L, Link &p, Link s){ //将元素插入由p指定位置的下一个位置,并修改p指向新节点 if(!L.head){ cout << "线性链表不存在" << endl; return 0; } s->next = p->next; p->next = s; if(p==L.tail) L.tail = L.tail->next; p = s; L.len++;return 1;}Status SetCurElm(Link &p, ElemType e){ //修改当前指针p指向的元素的数据域的值为e p->data = e; return 1;}ElemType GetCurElem(Link p){ //获取当前指针p指向的元素的数据域的值,以e返回 return p->data;}Status ListEmpty(LinkList L){ if(!L.head){ cout << "线性链表不存在" << endl; return 0; } if(L.head->next==NULL) return 1; else return 0;}int ListLength(LinkList L){ if(!L.head){ cout << "线性链表不存在" << endl; return 0;}return L.len;}Position GetHead(LinkList L){ //返回链表当中头节点的位置 if(!L.head){ cout << "线性链表不存在" << endl; return 0;}return L.head;}Position GetLast(LinkList L){ //返回链表当中最后一个节点的位置 if(!L.head){ cout << "线性链表不存在" << endl; return 0; }return L.tail;}Position PriorPos(LinkList L, Link p){ //由当前p指向的位置,查找p的邻接前一个节点的位置 Link q = L.head; if(!L.head){ cout << "线性链表不存在" << endl; return 0;}if(p==L.head)return NULL;while(q->next!=p){ q = q->next; }return q;}Position NextPos(LinkList L, Link p){ //由当前p指向的位置,查找p的下一个邻接元素的位置 if(!L.head){ cout << "线性链表不存在" << endl; return 0; }if(p==L.tail)return NULL; return p->next;}Status LocatePos(LinkList L,int i,Link &p){ //获取当前链表内第i个元素的位置,如果i不存在,则ERROR int j = 0; Link pt = L.head; while(pt&&j<i){ pt = pt->next; j++;}if(!pt||j>i)return 0;else{p=pt;return 1; }}Status compare(ElemType x,ElemType y){if(x==y)return 1;elsereturn 0;}Position LocateElem(LinkList L,ElemType e,Status (*compare)(ElemType,ElemType)){ Link q = L.head->next; while(q->next!=NULL){if(compare(q->data,e))return q; q = q->next; }return NULL;}Status visit(ElemType x){ cout << x << " "; return 1;}Status ListTraverse(LinkList L,Status(*visit)(ElemType)){ Link q = L.head->next; while(q){if(visit(q->data)) q = q->next; elsereturn 0;} return 1;}//算法2.20Status ListInsert_L(LinkList &L,int i,ElemType e){ Link h,s; if(!LocatePos(L,i-1,h)) return 0; if(!MakeNode(s,e)) return 0; InsFirst(h, s); return 1;}//算法2.21Status MergeList_L(LinkList &La,LinkList &Lb,LinkList &Lc,int (*compare)(ElemType,ElemType)){ if(!InitList(Lc)) return 0; Link ha, hb, pa, pb, q; ha = GetHead(La); hb = GetHead(Lb); pa = NextPos(La, ha); pb = NextPos(Lb, hb); while(pa&&pb){ ElemType a, b; a = GetCurElem(pa); b = GetCurElem(pb); if((*compare)(a,b)<=0){ DelFirst(ha, q); Append(Lc, q); pa = NextPos(La, ha); }else{ DelFirst(hb, q); Append(Lc, q); pa = NextPos(Lb, hb); } } if(pa) Append(Lc, pa); else Append(Lc, pb); FreeNode(ha); FreeNode(hb); return 1;}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。