單鏈表操作執行個體程式

來源:互聯網
上載者:User

標籤:c++   鏈表   單鏈表   

#include <iostream>#include <iomanip>using namespace std;typedef struct node{int val;node *next;}node;node * create_list();void traverse_list(node *pHead);int  get_len_list(node *pHead);bool delete_list(node *pHead,int pos,int &val);bool insert_list(node *pHead,int pos,int val);void sort_list(node *pHead);void reverse_list(node *PHead);void main(){node *pHead = create_list();    int len = get_len_list(pHead);cout<<"list length:"<<len<<endl;traverse_list(pHead);int val;delete_list(pHead,6,val);cout<<"被刪除的值為:"<<val<<endl;traverse_list(pHead);insert_list(pHead,3,9);insert_list(pHead,1,7);traverse_list(pHead);sort_list(pHead);traverse_list(pHead);reverse_list(pHead);traverse_list(pHead);}node * create_list(){int len = 6,i;node *pHead = new node,*pTail,*pNew;// cout<<"請輸入建立鏈表的節點數:";// cin>>len;pTail = pHead;pHead->next = NULL;for (i=0;i<len;i++){//cout<<"輸入第"<<setw(2)<<i<<"節點的值:";pNew = new node;//cin>>pNew->val;pNew->val = i+1;pTail->next = pNew;pTail = pNew;}pTail->next = NULL;return pHead;}void traverse_list(node *pHead){node *p = pHead->next;while (p){cout<<p->val<<" ";p = p->next;}cout<<endl;}//取得節點個數,不包括前端節點int  get_len_list(node *pHead){node *p = pHead->next; //指向第一個節點int len = 0;while(p){++len;p = p->next;}return len;}//刪除第pos個節點,pos從首節點開始計數bool delete_list(node *pHead,int pos,int &val){node *p = pHead;int i = 1;while (NULL != p->next && i < pos) //找到刪除節點之前的一個節點{p = p->next;i++;}if (i > pos || NULL == p->next)//{return false;}node * q = p->next;val = q->val;p->next = q->next;delete q;    return true;}bool insert_list(node *pHead,int pos,int val){node *p = pHead;int i = 1;while(NULL != p->next && i < pos){++i;p = p->next;}if (i > pos /*|| NULL ==  p->next*/) { return false;}node *pNew = new node;pNew->val = val;pNew->next = p->next;p->next = pNew;return true;}//升序排序void sort_list(node *pHead){     node *p = pHead->next,*q; int tmp; while (p) { q= p->next; while(q) { if (p->val > q->val) { tmp = p->val; p->val = q->val; q->val = tmp; } q= q->next; } p = p->next; }}void reverse_list(node *pHead){node *p = pHead,*q1,*q2,*q3,*tempq1;q1 = pHead->next;tempq1 = q1;q2 = q1->next;while (q2){q3 = q2->next;q2->next = q1;q1 = q2;q2 = q3;}pHead->next = q1;tempq1->next = NULL;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.