链表的一些基本操作

将vector里的元素一次遍历放到里,构建链表

vector<ListNode*>a;
 ListNode *head=v[0];//到时候return的时候是head指针
        ListNode *cur=head;//使用cur进行连接操作

for(int i=1;i<v.size();i++){
            cur->next=v[i];//先让链表的结点指向下一个元素 
            cur=cur->next; //再进行移动
        }

将链表里的元素放到vector中

 while (pHead) {//当没有遍历完
            v.push_back(pHead);//将链表元素放入vector中,vector里面是(listnode *)的元素
            pHead = pHead->next;//放完链表就往下走
        }

正儿八经的代码

        int i=0;
        vector<int>res;
        ListNode* p=head;
        ListNode* p1=head;
        while(p)
        {
            res.push_back(p->val);//将数据取出保存在res数组中
            p=p->next;

待优化的直接用链表进行冒泡排序

for(int i=0;i<count-1;i++){
            p=head;
            q=p->next;//做了i次,每次从head开始 最后将使得满足条件的 在最后一个
            while(q){
                if(p->val>q->val){
                    temp=q->val;
                    q->val=p->val;
                    p->val=temp;
                    
                }p=q;
                if(q->next) q=q->next;//直到q到末尾前 都进行while实现排序
                else break;
              
            }
        }

        }
        sort(res.begin(),res.end());//将数组从小到大排序
        while(p1)
        {
            p1->val=res[i++];//将排序好的数组里面的数据逐个放回链表的对应结点中
            p1=p1->next;
        }
        return head;
上一篇:单片机的寻址


下一篇:《C语言深度剖析》第四章 指针和数组 p1 C语言从入门到入土(进阶篇)