循环链表的基本操作
#include <iostream>
#include <stdlib.h>
#include <Windows.h>
#include <time.h>
using namespace std;typedef int dataType;typedef struct Node{dataType data;struct Node *next;
}CLListNode;
typedef CLListNode *pCLList;//使用尾插法,創(chuàng)建一個(gè)循環(huán)鏈表
pCLList CreateLinkList_1_9_order()
{pCLList head=(CLListNode*)malloc(sizeof(CLListNode));head->next=NULL;CLListNode *p=NULL;CLListNode *r=head;int num=9,i=1;while (i<=num){p=(CLListNode*)malloc(sizeof(CLListNode));p->data=i;r->next=p;r=p;i++;}r->next=head;return head;
}//輸出循環(huán)鏈表
void OutPut(pCLList l)
{CLListNode *p=l->next;cout<<"LinkList:";while(p!=l){cout<<p->data<<" ";p=p->next;}cout<<endl<<endl;
}//釋放循環(huán)鏈表內(nèi)存
void FreeCLinkList(pCLList *l) //傳入pCLList二級(jí)指針
{CLListNode *p=(*l)->next,*temp; //定義移動(dòng)指針p,初始化為頭指針,指向頭結(jié)點(diǎn)free(*l);while (p!=*l){temp=p;p=p->next;free(temp);}*l=NULL;
}//獲取鏈表長(zhǎng)度
int GetLListLength(pCLList l)
{CLListNode *p=l->next;int i=0;while (p!=l){i++;p=p->next;}return i;
}//連接兩個(gè)循環(huán)鏈表
void ConnectTwoCLList(pCLList a,pCLList b)
{CLListNode *pa=a->next,*pb=b->next,*temp=b;while(pa->next!=a){pa=pa->next;}pa->next=b->next;free(temp);while (pb->next!=b){pb=pb->next;}pb->next=a;
}int main()
{pCLList a=CreateLinkList_1_9_order();OutPut(a);pCLList b=CreateLinkList_1_9_order();OutPut(b);ConnectTwoCLList(a,b);OutPut(a);b=NULL;FreeCLinkList(&a);system("pause");return 1;
}
總結(jié)
- 上一篇: C++倒计时制作教程
- 下一篇: 在Bootstrap4中使用垂直居中