![](https://img-blog.csdnimg.cn/b2c3af1adafb43f2bb7b83aa25a59dd8.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构c++
写一些初学数据结构时的知识和常见题型
cxz_xy
这个作者很懒,什么都没留下…
展开
-
双向循环链表创建
定义typedef struct linkLNode { int data; struct linkLNode *next; struct linkLNode *prior;} ListNode,*LinkList; 创建void createLinkList(LinkList &head){ head = new ListNode; head->prior = NULL; head->next = NULL;原创 2022-04-18 21:26:58 · 661 阅读 · 0 评论 -
循环链表应用-约瑟夫环
void Joseph(LinkList p,LinkList q,int m){ //p是首元结点,q是尾结点,m是报的数 int i=1; while(p!=q){ if(i==m){ q->next=q->next->next; delete p; p=q->next; i=1; } else{ q=p; p=p->next; i++; } } cout<<p->data;}...原创 2022-04-18 21:25:48 · 138 阅读 · 0 评论 -
求单链表长度
int listLength(LinkList &L){ int len = 0; LinkList p=L->next; //有头结点 //LinkList p=L;无头结点 while(p!= NULL) { len++; p = p->next; } return len;}原创 2022-04-18 21:25:01 · 384 阅读 · 0 评论 -
单链表排序(冒泡排序)
void sortList(LinkList &L,int len){ LinkList p=L->next; //有头结点 //LiinkList p=L;//无头结点 int i,j,temp; for(i=0;i<len-1;i++) { p=L->next; for(j=0;j<len-1-i;j++) { if(p->data>p->next->data){ temp=p->data; .原创 2022-04-18 21:24:13 · 234 阅读 · 0 评论 -
两个有序链表合并(相同内容删去)
void margeLinkList(LinkList &LA,LinkList &LB){ LinkList pa,pb,pc,LC; pa=LA->next; pb=LB->next; pc=LA; while(pa!=NULL&&pb!=NULL){ while(pa->next!=NULL&&pa->data==pa->next->data) pa=pa->next; while(p.原创 2022-04-18 21:21:40 · 326 阅读 · 0 评论 -
将单链表中数据域最大值移到链表末尾
void removeToEnd(LinkList &L){ListNode *q=L->next->next,*p=L->next->next->next,*r=q,*s; //q指向当前最大值,p指向要判断的结点,r是p的前驱,s是最大值的前驱 while(p)//寻找最大值结点及其前驱 { if(p->data>q->data) { s=r; q=p; } r=p; p=p->next; } .原创 2022-04-18 21:20:53 · 2455 阅读 · 0 评论 -
单链表查找
按值查找返回结点指针ListNode *LocateElem(LinkList L,int e) { LinkList p=L->next; //有头结点 while(p&&p->data!=e){ p=p->next; } return p;}返回位置int LocateElem(LinkList L,int e){ p=L->next; int j=1; while(p&&p->data!=e){原创 2022-04-18 21:19:15 · 75 阅读 · 0 评论 -
单链表插入结点
void insertList(LinkList &L,int i,int e){ LinkList p=L; int j=0; while(p&&j<i-1){ //在i-1位置插入 p=p->next; j++; }; s=new ListNode; s->data=e; s->next=p->next; p->next=s;}原创 2022-04-18 21:16:33 · 111 阅读 · 0 评论 -
打印单链表
void PrintList(LinkList &L){ LinkList p = L->next; while(p) { cout<<p->data<<" "; p = p->next; }}原创 2022-04-18 21:14:56 · 536 阅读 · 0 评论 -
单链表定义及创建
单链表定义typedef struct ListNode { int data; struct ListNode *next;} ListNode,*LinkList;尾插法创建有头结点单链表void createListFromTail(LinkList &L,int n){ L= new ListNode; L->next=NULL; LinkList p,r =L; for(int i=0;i<n;i++) { p=new Lis原创 2022-04-18 21:12:29 · 156 阅读 · 0 评论