// lianbiao caidan.cpp : //
#include \"stdafx.h\"
#include\"c1.h\"
typedef int ElemType; #include\"c2-2.h\" #include\"bo2-2.cpp\" #include\"func2-2.cpp\"
FILE *fp;
Status ListInsertLeft(LinkList L,ElemType i,ElemType e) { LinkList s,p=L; while(p&&p->next->data!=i) { p=p->next; } s=(LinkList)malloc(sizeof(LNode)); s->data=e; s->next=p->next; p->next=s; return OK; }
Status ListInsertRight(LinkList L,ElemType i,ElemType e) { LinkList s,p=L; while(p&&p->data!=i) { p=p->next; } s=(LinkList)malloc(sizeof(LNode)); s->data=e; s->next=p->next; p->next=s; return OK; }
void CreateList(LinkList &L,int n) { int i;
LinkList p;
L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; printf(\" 请?输º?入¨?%d个?数ºy据Y\\n\",n); for(i=n;i>0;--i)
{ p=(LinkList)malloc(sizeof(LNode)); scanf(\"%d\",&p->data); p->next=L->next; L->next=p; } }
void MergeList(LinkList La,LinkList &Lb,LinkList &Lc) {
LinkList pa=La->next,pb=Lb->next,pc; Lc=pc=La; while(pa&&pb)
if(pa->data<=pb->data) { pc->next=pa; pc=pa;
pa=pa->next; } else
{ pc->next=pb; pc=pb;
pb=pb->next; }
pc->next=pa?pa:pb; free(Lb); Lb=NULL; }
int _tmain(int argc, _TCHAR* argv[]) { LinkList L,Lb,lq,Lc; ElemType e; Status i; int j,k,flag=1,m; int c,ch,n=6; char w; printf(\" 主¡Â菜?单Ì£¤ \\n\"); printf(\"-------------------\\n\"); printf(\" 1.建¡§立¢¡é链¢¡ä表À¨ª \\n\");
printf(\" 2.输º?入¨?文?件t元a素? \\n\"); printf(\" 3.在¨²尾2部?插?入¨?元a素?: \\n\"); printf(\" 4.删¦?除y元a素?:êo \\n\"); printf(\" 5.插?入¨?元a素?:êo \\n\");
printf(\" 6.将?链¢¡ä表À¨ªL与®?Lb按ã¡ä值¦Ì非¤?递ÌY减?排?列¢D \\n\"); printf(\" 7.退ª?出?链¢¡ä表À¨ª \\n\"); printf(\"-------------------\\n\");
while(flag) { printf(\"请?输º?入¨?选?项?:\"); scanf(\" %d\",&m); switch(m) { case 1: InitList(L); printf(\" 初?始º?化¡¥链¢¡ä表À¨ªL \\n\"); for(j=1;j<=8;j++) { i=ListInsert(L,j,2*j); }
case 2:
printf(\"Print LinkList,ê?L=\"); ListTraverse(L,print); printf(\"\\n\"); break;
printf(\" 是º?否¤?输º?入¨?文?件t元a素?(ê¡§0/1):\"); scanf(\"%d\",&k); if(k==1) {
fp=fopen(\"element.txt\",\"r\"); if(fp) { while(!feof(fp)) { c=fgetc(fp); if(c!=EOF)//end of file { i=ListInsert(L,1,c); } } fclose(fp); } printf(\"Print LinkList,ê?L=\"); ListTraverse(L,print); } printf(\"\\n\"); break;
case 3:
{
LinkList p=L; i=0;
while(p)//循-环¡¤到Ì?链¢¡ä表À¨ª表À¨ª尾2 { i++; p=p->next; } printf(\" 输º?入¨?在¨²表À¨ª尾2插?入¨?的Ì?元a素?:\"); scanf(\"%d\",&c); i=ListInsert(L,i,c); }
printf(\"Print LinkList,ê?L=\"); ListTraverse(L,print); printf(\"\\n\"); break;
case 4: printf(\" 输º?入¨?要°a删¦?除y的Ì?元a素?:\"); scanf(\"%d\",&e); printf(\" 查¨¦找¨°链¢¡ä表À¨ª中D与®?e相¨¤等̨¨的Ì?元a素?,ê?并¡é将?排?序¨°
赋3给?j\\n\");
j=LocateElem(L,e,equal); if(j) { printf(\" 第̨²%d个?元a素?的Ì?值¦Ì为a%d\\n\",j,e); k=ListLength(L);
{ i=ListDelete(L,j,e); if(i==ERROR) printf(\" 删¦?除y第̨²%d个?元a素?失º¡ì败㨹(不?存ä?在¨²此
ä?元a素?)。¡ê\",j);
else printf(\" 删¦?除y第̨²%d个?元a素?成¨¦功|,ê?其?值¦Ì为a%d\\n\",j,e); } printf(\" 依°¨¤次ä?输º?出?L的Ì?元a素?:êo\"); ListTraverse(L,print); } else printf(\" 不?存ä?在¨²要°a删¦?除y的Ì?数ºy \\n\"); printf(\"\\n\"); break; case 5: printf(\" 输º?入¨?要°a插?入¨?的Ì?元a素?: \"); scanf(\"%d\",&ch); printf(\" 输º?入¨?要°a插?入¨?的Ì?位?置?: \"); scanf(\"%d\",&c); printf(\" 插?入¨?前¡ã还1是º?后¨®(l/r): \"); getchar(); w=getchar(); if(w=='l'||w=='L') { i=ListInsertLeft(L,c,ch); } else { i=ListInsertRight(L,c,ch); } ListTraverse(L,print); printf(\"\\n\"); break; case 6: printf(\" 初?始º?化¡¥链¢¡ä表À¨ªLb \\n\"); InitList(Lb); CreateList(Lb,n); printf(\" Lb=\");
ListTraverse(Lb,print); MergeList(L,Lb,Lc);
printf(\" Lc=\"); ListTraverse(Lc,print); } } }
fp=fopen(\"element.txt\",\"w\"); if(fp) { lq=Lc->next; while(lq) { fputc(lq->data,fp); lq=lq->next; } } printf(\"\\n\"); break; case 7: printf(\" 退ª?出?链¢¡ä表À¨ª\\n\"); printf(\"\\n\"); flag=0; break;