• 线性表——将一个带头结点的单链表A分解为两个相同结构的链表B和C,B中结点小于0,C中结点大于0。


    更新了填充链表的函数,方便负数填入

    //“LinkList.h”
    #include<iostream> using namespace std; #define ElemType int typedef struct LNode{ ElemType data; struct LNode *next; }LNode,*LinkList; string InitList(LinkList &L){ L = new LNode; L->next = NULL; return "OK"; } string ListInsert(LinkList &L,int i,ElemType e){ LinkList P = L; int j=0; while (P && (j<i-1)) { P = P->next;++j; } LinkList S = new LNode; S->data = e; S->next=P->next; P->next=S; return "OK"; } ElemType GetElement(LinkList L,int i){ LinkList p = L; int j = 1; while(p && j<i){ p=p->next; j++; } if(!p||j>i){ return -1; } return p->data; } string DeleteList(LinkList &L,int i){ LinkList p = L; int j = 0; while ((p->next)&&(j<i-1)) { p=p->next; j++; } if(!(p->next)||(j>i-1)) return "ERROR"; LinkList q = p->next; p->next=q->next; delete q; return "OK"; } string ShowList(LinkList L){ LinkList p= L; while(p->next){ p=p->next; cout<<p->data; } return "OK"; } string FillList(LinkList &L){ int p =1; char a = '1'; while (a != '!') { ElemType b ; cin >> b; ElemType e = (ElemType)b - 48; a = b; if(a != '!') cout << ListInsert(L,p,b)<<endl; p++; } return "OK"; } string FillListWithNum(LinkList &L,int i){ int e; for(int j =1;j<=i;j++){ cin >> e; ListInsert(L,j,e); } return "OK"; } // ShowList(L); // DeleteList(L,2); // ShowList(L); // return 0; // }
    #include<iostream>
    #include"LinkList.h"
    using namespace std;
    
    /*
     将一个带头结点的单链表A分解为两个相同结构的链表B和C,B中结点小于0,C中结点大于0。
    
    */
    
    int main(){
    
        LinkList LA;
        LinkList LB;
        LinkList LC;
    
        InitList(LA);
        InitList(LB);
        InitList(LC);
    
        FillListWithNum(LA,8);
    
        LNode *pa = LA->next;
        
        LNode*pb=LB;
        LNode*pc=LC;
    
        while(pa){
    
            if(pa->data<0){
                pc->next=NULL; //因为是直接取LA的结点,如果取后不对结点A->next清空,则A会连接LA之后的其他结点
                pb->next=pa;
                pb=pb->next;
            }else
            {
                pb->next=NULL;
                pc->next=pa;
                pc=pc->next;
            }
            pa=pa->next;
    
        }
     
        delete LA;
    
            cout<<endl;
            ShowList(LB);     
            cout<<endl;
            ShowList(LC);
            system("pause");
            return 0;
        }

  • 相关阅读:
    面试题收集——Java基础部分(一)
    Eclipse在线安装SVN
    一、 Log4E插件下载
    MyEclipse使用总结——MyEclipse中配置WebLogic12c服务器
    MyEclipse使用总结——使用MyEclipse打包带源码的jar包
    MyEclipse使用总结——设置MyEclipse使用的Tomcat服务器
    MyEclipse使用总结——设置MyEclipse开发项目时使用的JDK
    MyEclipse使用总结——修改MyEclipse默认的Servlet和jsp代码模板
    MyEclipse使用总结——MyEclipse文件查找技巧
    CMSIS Example
  • 原文地址:https://www.cnblogs.com/LuMinghao/p/13996744.html
Copyright © 2020-2023  润新知