链表
幸运数字-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 · 431 阅读 · 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 · 101 阅读 · 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 · 71 阅读 · 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 · 61 阅读 · 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 · 227 阅读 · 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 · 210 阅读 · 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 · 1719 阅读 · 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 · 159 阅读 · 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 · 251 阅读 · 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 · 682 阅读 · 0 评论