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
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->data
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
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(i
CreatCircularLinkList.cpp #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
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
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
顺序表及链表的应用



