好文档 - 专业文书写作范文服务资料分享网站

顺序表及链表的应用

天下 分享 时间: 加入收藏 我要投稿 点赞

printf(\请按逆位序输入:\\n\ CreateList_L(&La,n1); printf(\ PrintLinkList(La); printf(\请输入单链表Lb的长度::\ scanf(\ printf(\请按逆位序输入:\\n\ CreateList_L(&Lb,n2); printf(\ PrintLinkList(Lb); EqualLinkList(&La,&Lb); printf(\删除元素以后 \\n\ printf(\ PrintLinkList(La); printf(\ PrintLinkList(Lb); }

CreateList_L.cpp #include #include \#include

void CreateList_L(LinkList *L,int n)

{//逆位序输入n个元素的值,建立带表头结点的单性线性表L int i; LinkList p; *L=(LinkList)malloc(sizeof(LNode)); (*L)->next=NULL;//先建立一个带头结点的单链表 for(i=n;i>0;--i) { p=(LinkList)malloc(sizeof(LNode));//生成新结点 scanf(\输入元素值 p->next=(*L)->next; (*L)->next=p;//插入到表头 } }

EqualLinkList.cpp #include \#include

int EqualLinkList(LinkList *La,LinkList *Lb) {//删除两单链表中不同的元素 LinkList ha,hb,pa,pb; ha=*La;hb=*Lb; pa=ha->next;pb=hb->next;

11

while(pa&&pb) { if(pa->datadata){ha->next=pa->next;free(pa);pa=ha->next;} else if(pa->data>pb->data){hb->next=pb->next;free(pb);pb=hb->next;} else {ha=pa;pa=pa->next;hb=pb;pb=pb->next;} } if(pa){ha->next=NULL;free(pa);} else {hb->next=NULL;free(pb);} return 1; }

PrintLinkList.cpp #include \#include

int PrintLinkList(LinkList L) {//输出单链表 LinkList p=L->next; if(!p)printf(\ while(p) { printf(\ p=p->next; } printf(\ return 1; }

…………………………………………………………………………………………………….... Check_2.cpp #include \#include void Check_2() { int n;LinkList L; printf(\请输入猴子的个数:\ scanf(\ CreatCircularLinkList(&L,n); MonkeyKing(L,n); }

MonkeyKing.cpp #include \#include

int MonkeyKing(LinkList L,int n)

12

{ int m; printf(\输入 m:\ scanf(\ LinkList p=L,p1=L; while(p1->next!=L)p1=p1->next; int k=n,i=0,j=0; while(inext=p->next;j=0;i++;} else p1=p; p=p->next; } printf(\ return 1; }

CreatCircularLinkList.cpp #include \#include #include

void (LinkList *L,int n) { //建一个不带头结点的循环链表,L为头指针 int i; LinkList p; *L=(LinkList)malloc(sizeof(LNode)); (*L)->next=*L; (*L)->data=1; //printf(\ //scanf(\ for(i=n;i>1;--i) { p=(LinkList)malloc(sizeof(LNode)); //scanf(\ p->data=i; p->next=(*L)->next; (*L)->next=p; } }

……………………………………………………………………………………………………....

13

Check_3.cpp

#include #include \void Check_3() { DuLinkList D; int e,i,choice; printf(\请输入非循环双链表的元素的个数:\ scanf(\ CreateLinkList_Dul(&D,i); printf(\执行Locate运算前:\\n\ PrintLinkList_Dul(D); do { printf(\请输入要访问元素的值:\ scanf(\ Locate(&D,e); printf(\执行Locate运算后:\\n\ PrintLinkList_Dul(D); printf(\输入choice的值,输入1代表继续执行locate,输入0代表退出:\\n\ scanf(\ }while(choice); printf(\}

Locate.cpp

#include \#include

int Locate(DuLinkList *L,ElemType e) { DuLinkList s,t,p=(*L)->next; if(!p) {printf(\ int i=0,n=LinkListLength_Dul(*L); while(p!=NULL) { if(p->data==e) { i++; (p->freq)++; printf(\频度为%d\\n\ s=p; if(p->next==NULL) p->prior->next=NULL; else

14

{ p->next->prior=p->prior; p->prior->next=p->next; } //p=s->next; t=s->prior; while(((t->freq)<(s->freq))&&t!=(*L))t=t->prior; if((t->freq)>=(s->freq)) { s->next=t->next; t->next->prior=s; s->prior=t; t->next=s; } else { s->next=(*L)->next; (*L)->next->prior=s; s->prior=(*L); (*L)->next=s; } } p=p->next; } if(i==0){printf(\ return 1; }

CreateLinkList_Dul.cpp #include \#include #include

int (DuLinkList *L,int n) { DuLinkList p1,p2; int i; *L=(DuLinkList)malloc(sizeof(DuLNode)); (*L)->prior=NULL;(*L)->next=NULL; //(*L)->freq=0; p1=*L; printf(\输入元素:\\n\ for(i=1;i<=n;i++) { p2=(DuLinkList)malloc(sizeof(DuLNode)); scanf(\ p1->next=p2;

15

顺序表及链表的应用

printf(\请按逆位序输入:\\n\CreateList_L(&La,n1);printf(\PrintLinkList(La);printf(\请输入单链表Lb的长度::\scanf(\printf(\请按逆位序输入:\\n\CreateList_L(&Lb,n2);printf(\PrintLinkList(Lb);EqualLinkList(&La,&
推荐度:
点击下载文档文档为doc格式
02iav2pszk6i8ss1c8w102tjb2ixwe014mj
领取福利

微信扫码领取福利

微信扫码分享