
链表
幸运数字-12
计算机技术专业在读
展开
-
单链表操作集合完整版
#include<stdio.h> #include<stdlib.h> #include<iostream> using namespace std; typedef int ElemType; typedef struct LNode{ ElemType data; struct LNode *next; }LNode,*LinkList; LinkList merge(LinkList &la,LinkList &lb) { LNode .原创 2021-12-06 16:14:21 · 469 阅读 · 0 评论 -
数组循环左移2010
//数组循环左移 reverse(int A[],int from,int to) { int i,t; for(i=0;i<(to-from+1)/2;i++) { t=A[from+i]; A[from+i]=A[to-i]; A[to-i]=t; } } Converse(int A[],int n,int p) { reverse(A,0,p-1); reverse(A,p,n-1); reverse(A,0,n-1); } 利用逆思想。 空间复杂度O(1).原创 2021-12-03 16:27:51 · 127 阅读 · 0 评论 -
分配前指针
LinkList prior(LinkList &L) { LNode *p=L->next,*q=L; while(p!=L) { p->prior=q; p=p->next; q=q->next; } L->prior=p; return L; }原创 2021-12-03 15:25:08 · 92 阅读 · 0 评论 -
寻找倒数第K元素(高频)
int searchk(LinList list,int k) { LNode *p,*q; p=list->next; q=list->next; int cnt=0; while(p!=NULL) { if(cnt<k) cnt++; else q=q->next; p=p->next; } if(cnt<k) return 0; else { printf("%d",q->data);.原创 2021-12-02 15:04:11 · 86 阅读 · 0 评论 -
删除顺序链表值相同的元素
思想:有序表所有相同值域的结点都是相邻的。用 p 扫描递增单链表L,若 *p 结点的值域等于其后继结点的值域,则删除后者,否则p移动向下一个结点。 void Delete(LinkList &L) { LNode *p=L->next,*q; if(p==NULL) return; while(p->next!=NULL) { q=p->next; if(p->data==q->data) { p->next=q->next原创 2021-11-06 21:01:55 · 262 阅读 · 0 评论 -
合并链表问题
1.将两个有序递增合并为一个递增有序,且使用原来的空间 //合并两个递增有序链表 void merge(LinKList &la,LinkList &lb,LinkList &lc) { pa=la->next; pb=lb->next; lc=pc=la; while(pa&&pb) { if(pa->data<pb->data) { pc->next=pa; pc=pa; pa=p原创 2021-11-05 16:45:03 · 261 阅读 · 0 评论 -
单链表的简单选择排序
LinkList selectsort(LinkList &L) { LNode *p=L->next,*q,*min; while(p) { q=p->next; min=p; while(q) { if(q->data<min->data) min=q; q=q->next; } if(min!=p) { swap(min->data,p->data); } p=p->next; .原创 2021-11-03 21:44:17 · 1788 阅读 · 0 评论 -
带头结点链表的反转
//链表就地转置 void reverse(LinkList &L) { LNode *p,*q; p=L->next; L->next=NULL; while(p) { q=p->next; p->next=L->next; L->next=p; p=q; } }原创 2021-10-28 15:52:27 · 184 阅读 · 0 评论 -
求链表交集
//合并链表 求交集 LinkList Union(LinkList &la,LinkList &lb) { pa=la->next; pb=lb->next; pc=la; while(pa&&pb) { if(pa->data==pb->data) { pc->next=pa; pc=pa; pa=pa->next; q=pb; pb=pb->next; free(q);...原创 2021-10-28 15:39:32 · 292 阅读 · 0 评论 -
判断带头结点单链表是否递增
int judge(LinkList L) { LNode *p=L->next,q; while(p) { q=p->next; if(q->data>p->data) p=p->next; else return 0; } return 1; }原创 2021-11-01 22:04:56 · 762 阅读 · 0 评论