锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久99热这里只频精品6,久久精品国产亚洲av麻豆图片,性高湖久久久久久久久http://www.shnenglu.com/lance123/category/104.html鏈変簨涓嶆厡錛屾棤浜嬩笉鑽掞紝鏈夊涔冨ぇ錛屾棤嬈插垯鍒氾紝浠ュ痙绔嬬翰錛屽鍦嗗唴鏂廣?zh-cnThu, 22 May 2008 13:51:39 GMTThu, 22 May 2008 13:51:39 GMT60榪峰鐨勬眰瑙?鏁版嵁緇撴瀯鐨勬爤榪愮敤)http://www.shnenglu.com/lance123/articles/715.html鏃犳儏闆?/dc:creator>鏃犳儏闆?/author>Wed, 19 Oct 2005 12:47:00 GMThttp://www.shnenglu.com/lance123/articles/715.htmlhttp://www.shnenglu.com/lance123/comments/715.htmlhttp://www.shnenglu.com/lance123/articles/715.html#Feedback2http://www.shnenglu.com/lance123/comments/commentRss/715.htmlhttp://www.shnenglu.com/lance123/services/trackbacks/715.html//base.h
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define OVERFLOW -2
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int Status;


//stack.h
#define STACK_INIT_SIZE 100 //瀛樺偍絀洪棿鍒濆閲?BR>#define STACK_INCREMENT 10//瀛樺偍絀洪棿鍒濆澧為噺
typedef struct
{
 int r;
 int c;
}PostType;//鍧愭爣浣嶇疆  榪峰鐨剅琛宑鍒?BR>typedef struct
{
 int ord;//閫氶亾鍧楀湪璺緞涓婄殑搴忓彿
 PostType seat;//閫氶亾鍧楃殑褰撳墠鍧愭爣浣嶇疆
 int di;//閫氶亾鍧楁寚鍚戜笅涓閫氶亾鍧楃殑鏂瑰悜
}SElemType;//鏍堝厓绱犵殑綾誨瀷
typedef struct
{
 SElemType *base;//鏍堝簳鎸囬拡
 SElemType *top;//鏍堥《鎸囬拡
 int stacksize;//鏍堢殑鏈澶у閲?BR>}Stack;//鏍堢殑綾誨瀷

Status InitStack(Stack &S)//鍒濆鍖栨爤
{
 S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));
 if(!S.base)
  exit(OVERFLOW);//瀛樺偍鍒嗛厤澶辮觸;
 S.top=S.base;
 S.stacksize=STACK_INIT_SIZE;
 return OK;
}//InitStack

Status StackEmpty(Stack S)
//鍒ゆ柇鏍堟槸鍚︿負絀?濡傛灉涓虹┖榪斿洖TRUE,鍚﹀垯榪斿洖FALSE
{
 if(S.top==S.base)
  return TRUE;
  return FALSE;
}//StackEmpty

Status Push(Stack &S,SElemType e)
//鎻掑叆鍏冪礌涓篹鐨勬爤欏跺厓绱?BR>{
 if(S.top-S.base>=S.stacksize)
 {
  S.base=(SElemType*)realloc(S.base,(S.stacksize+STACK_INCREMENT)*sizeof(SElemType));
       if(!S.base)
       exit(OVERFLOW);
    S.top=S.base+S.stacksize;
    S.stacksize+=STACK_INCREMENT;
 }
 *S.top++=e;
 return OK;
}//Push

Status Pop(Stack &S,SElemType &e)
//鍒犻櫎鏍堥《鍏冪礌瀛樺叆e
{
 if(S.top==S.base)
  return ERROR;
 e=*--S.top;
 return OK;
}//Pop

Status DestroyStack(Stack &S)
//閿姣佹爤
{
 free(S.base);
 S.top=S.base;
 return OK;
}//DestroyStack


//maze.cpp
#define MAXLEN 20//榪峰鍖呮嫭澶栧鏈澶ц鍒楁暟鐩?BR>typedef struct{
         int r;
         int c;
         char adr[MAXLEN][MAXLEN];//鍙彇' ''*' '@' '#'
}MazeType;   //榪峰綾誨瀷

Status InitMaze(MazeType &maze){
//鍒濆鍖栬糠瀹嫢鎴愬姛榪斿洖TRUE,鍚﹀垯榪斿洖FALSE
         int m,n,i,j,k=1;
         printf("杈撳叆榪峰彛鐨勮鏁板拰鍒楁暟: ");
         scanf("%d%d",&maze.r,&maze.c); //榪峰琛屽拰鍒楁暟
         for(i=0;i<=maze.c+1;i++){//榪峰琛屽澧?BR>                   maze.adr[0][i]='#';
                   maze.adr[maze.r+1][i]='#';
         }//for
         for(i=0;i<=maze.r+1;i++){//榪峰鍒楀澧?BR>                  maze.adr[i][0]='#';
                   maze.adr[i][maze.c+1]='#';
         }
         for(i=1;i<=maze.r;i++)
                   for(j=1;j<=maze.c;j++)
                            maze.adr[i][j]=' ';//鍒濆鍖栬糠瀹?BR>         printf("杈撳叆闅滅鐗?d鐨勫潗鏍?浠ュ潗鏍?0,0)緇撴潫杈撳叆): ",k);
         scanf("%d%d",&m,&n);//鎺ユ敹闅滅鐨勫潗鏍?BR>   k++;
       while(m!=0)
    {
                   if(m>maze.r || n>maze.c)//瓚婄晫
                        exit(ERROR);
                   maze.adr[m][n]='#';//榪峰闅滅鐢?#'鏍囪
                   printf("杈撳叆闅滅鐗?d鐨勫潗鏍?浠ュ潗鏍?0,0)緇撴潫杈撳叆): ",k);
                   scanf("%d%d",&m,&n);
       k++;
        }
         return OK;
}//InitMaze        

Status Pass(MazeType maze,PostType curpos){
//褰撳墠浣嶇疆鍙氬垯榪斿洖TURE,鍚﹀垯榪斿洖FALSE
         if(maze.adr[curpos.r][curpos.c]==' ')//鍙?BR>                   return TRUE;
         else
                   return FALSE;
}//Pass

Status FootPrint(MazeType &maze,PostType curpos){
//鑻ヨ蛋榪囧茍涓斿彲閫氳繑鍥濼RUE,鍚﹀垯榪斿洖FALSE
//鍦ㄨ繑鍥炰箣鍓嶉攢姣佹爤S
         maze.adr[curpos.r][curpos.c]='*';//"*"琛ㄧず鍙?BR>         return OK;
}//FootPrint

PostType NextPos(PostType &curpos,int i){
//鎸囩ず騫惰繑鍥炰笅涓浣嶇疆鐨勫潗鏍?BR>         PostType cpos;
         cpos=curpos;
         switch(i){        //1.2.3.4鍒嗗埆琛ㄧず涓?鍗?瑗?鍖楁柟鍚?BR>                   case 1 : cpos.c+=1; break;
                   case 2 : cpos.r+=1; break;
                   case 3 : cpos.c-=1; break;
                   case 4 : cpos.r-=1; break;
                   default: exit(ERROR); 
         }
         return cpos;
}//Nextpos

Status MarkPrint(MazeType &maze,PostType curpos){
//鏇捐蛋榪囦絾涓嶆槸閫氳礬鏍囪騫惰繑鍥濷K
         maze.adr[curpos.r][curpos.c]='@';//"@"琛ㄧず鏇捐蛋榪囦絾涓嶉?BR>         return OK;
}//MarkPrint

void PrintMaze(MazeType &maze)
//灝嗘渶鍚庢爣璁板ソ鐨勮糠瀹緭鍑?BR>{
 int i,j;
 printf("\n杈撳嚭榪峰鐨勮礬寰?\n");
 for(i=0;i<=maze.c+1;i++)
  printf("%4d",i);//杈撳嚭鍒楁暟
 printf("\n");
 for(i=0;i<=maze.r+1;i++)
 {
  printf("%d",i);//杈撳嚭琛屾暟
  for(j=0;j<=maze.c+1;j++)
   printf("%4c",maze.adr[i][j]);//杈撳嚭榪峰
  printf("\n");
 }
}//PrintMaze


Status MazePath(MazeType &maze,PostType start,PostType end)
//鑻ヨ糠瀹粠鍏ュ彛start鍒癳nd鐨勯氶亾鍒欐眰寰椾竴鏉″瓨鏀懼湪鏍堜腑
{
 Stack S;//鍒濆鍖栨爤
 PostType curpos;
 int curstep;
 SElemType e;
 InitStack(S);
 curpos=start;
 curstep=1;
 do
 {
  if(Pass(maze,curpos))//褰撳墠浣嶇疆鍙氳繃鑰屾湭鏇捐蛋榪囩暀涓嬭凍榪?BR>  {
   FootPrint(maze,curpos);
   e.ord=curstep;e.seat=curpos;e.di=1;
   Push(S,e);//鍔犲叆鏍堣礬寰勪腑
     if(curpos.r==end.r && curpos.c==end.c)//鍒拌揪鍑哄彛榪斿洖TRUE
    {
    if(!DestroyStack(S))
    exit(OVERFLOW);
       else return TRUE;
    }
     else
      {
    curpos=NextPos(curpos,1);//涓嬩竴浣嶇疆鏄綋鍓嶄綅緗?BR>    curstep++;//鎺㈢儲涓嬩竴姝?BR>     }
  }//if
  else//褰撳墠浣嶇疆涓嶈兘閫氳繃
  {
   if(!StackEmpty(S))
   {
    Pop(S,e);//鎻愬彇鍓嶄竴浣嶇疆
    while (e.di==4 && !StackEmpty(S))//4涓柟鍚戦兘涓嶈兘閫氳繃鍒欑暀涓嬭鍙稝  鎻愬彇鍓嶄竴涓綅緗繘琛屽垽鏂槸鍚︽槸鑳介氳繃
    {
     MarkPrint(maze,e.seat);
     Pop(S,e);
    }
    if(e.di<4)//鎹笅涓涓柟鍚戞帰绱?nbsp; 璁懼畾褰撳墠浣嶇疆涓鴻鏂版柟鍚戜笂鐨勯偦浣?nbsp;
    {
     e.di++;
     Push(S,e);
     curpos=NextPos(e.seat,e.di);
    }
   }//if
  }
 }while(!StackEmpty(S));
 if(!DestroyStack(S))
  exit(ERROR);
 else return FALSE;
}//MazePath


void main()
{
 MazeType maze;
 PostType start,end;
 char c;
 do
 {
  printf("----------鎵句竴鏉¤糠瀹殑璺緞-------------\n");
  if(!InitMaze(maze))
  {
   printf("\n 鍒濆鍖栬糠瀹け璐?!!");
   exit(ERROR);
  }
  do
  {
   printf("\n璇瘋緭鍏ュ叆鍙g殑鍧愭爣:");
    scanf("%d%d",&start.r,&start.c);//杈撳叆鍏ュ彛鍧愭爣
   if(start.r>maze.r || start.c>maze.c)
    printf("\n杈撳叆閿欒,璇烽噸鏂拌緭鍏ュ叆鍙g殑鍧愭爣!!\n");
   continue;
  }
  while (start.r>maze.r || start.c>maze.c);
  do
  {
   printf("\n璇瘋緭鍏ュ嚭鍙g殑鍧愭爣:");//杈撳叆鍑哄彛鐨勫潗鏍?BR>   scanf("%d%d",&end.r,&end.c);
   if(end.r>maze.r || end.c>maze.c)
    printf("\n杈撳叆閿欒,璇烽噸鏂拌緭鍏ュ嚭鍙e潗鏍?!\n");
   continue;
  }
  while (end.r>maze.r || end.c>maze.c);
  if(!MazePath(maze,start,end))
   printf("\n涓嶈兘鎵懼埌涓鏉¤礬寰?!!\n");
  else PrintMaze(maze);//杈撳嚭榪峰
  printf("鏄惁瑕佺戶緇?(y/n):");
  scanf("%s",&c);
 }
 while (c=='y' || c=='Y');
}//main



]]>
闃熷垪--妯′技閾惰瀹㈡埛閫楃暀鐨勫鉤鍧囨椂闂?/title><link>http://www.shnenglu.com/lance123/articles/706.html</link><dc:creator>鏃犳儏闆?/dc:creator><author>鏃犳儏闆?/author><pubDate>Tue, 18 Oct 2005 15:23:00 GMT</pubDate><guid>http://www.shnenglu.com/lance123/articles/706.html</guid><wfw:comment>http://www.shnenglu.com/lance123/comments/706.html</wfw:comment><comments>http://www.shnenglu.com/lance123/articles/706.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/lance123/comments/commentRss/706.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/lance123/services/trackbacks/706.html</trackback:ping><description><![CDATA[<P>//鏁版嵁緇撴瀯錛圕璇█鐗堬級涓爤鐨勪範棰?/P> <P>#include<stdlib.h><BR>#include<stdio.h><BR>#include<malloc.h><BR>#include<conio.h><BR>#define ERROR 0<BR>#define OK 1<BR>typedef struct{<BR>  int OccurTime;<BR>  int NType;<BR>}Event;<BR>typedef struct{<BR> int ArrivalTime;<BR> int Duration;<BR>}QElemType;<BR>struct LNODE<BR>{<BR>  Event data;<BR>  struct LNODE *next;<BR>};<BR>typedef struct LNODE LNode;<BR>typedef struct LNODE *LinkList;<BR>typedef struct LNODE *EvenList;<BR>typedef struct QNode{<BR> QElemType elem;<BR> struct QNode *next;<BR>}QNode,*QueuePtr;<BR>typedef struct<BR>{ QueuePtr front;<BR>  QueuePtr rear;<BR>}LinkQueue;<BR>EvenList ev;<BR>Event en;<BR>LinkQueue q[5];<BR>QElemType customer;<BR>int TotalTime,CustomerNum,CloseTime;</P> <P>int InitList(EvenList *L)<BR>{<BR>  *L=(LNode *)malloc(sizeof(LNode));<BR>  if(!(*L))   exit(ERROR);<BR>  (*L)->next=NULL;<BR>  return OK;<BR>}<BR>int DelFirst(EvenList *L,Event *e)<BR>{ LNode *pc,*q;<BR>  pc=*L;q=pc->next;<BR> pc->next=q->next;*e=q->data;return OK;}<BR>int ListEmpty(LNode L)<BR>{LNode *p;<BR> int j=0;<BR> p=L.next;<BR> while(p)<BR>   {j++;break;}<BR> if(j==0) return 1;<BR> else return 0;<BR>}<BR>int compare(Event a,Event b)<BR>{ if(a.OccurTime>b.OccurTime) return 1;<BR>  else if(a.OccurTime==b.OccurTime) return 0;<BR>  else return -1;<BR>}<BR>int OrderInsert(EvenList *L,Event e,int (* cmp)(Event ,Event ))<BR>{ LNode *p,*pc;/*鎶婁簨浠舵彃鍏ラ摼琛?/<BR> p=(LNode *)malloc(sizeof(LNode));/*鍒嗛厤絀洪棿*/<BR> if(!p) { printf("not"); return(0);}<BR> if(ListEmpty(**L)) <BR> { p->data=e;p->next=(*L)->next;(*L)->next=p;}<BR> else {<BR>   switch(cmp(((*L)->next)->data,e))<BR>  {case -1:pc=(*L)->next;<BR>   while(pc->next!=NULL)<BR>   {<BR>    if((pc->next)->data.OccurTime<=e.OccurTime)<BR>        pc=pc->next;<BR>    else break;<BR>   }<BR>       p->data=e;p->next=pc->next;/*鎶婂畠鎺ュ湪姣斿畠澶х殑鍓?/<BR>       pc->next=p;break;<BR>     case 0:pc=(*L)->next;/*鐩哥瓑鏃訛紝鎺ュ湪鐩哥瓑鐨勫悗闈?/<BR>     p->data=e;p->next=pc->next;<BR>     pc->next=p;break;<BR>     case 1:p->data=e;p->next=(*L)->next;<BR>        (*L)->next=p;break;/*灝忎簬鏃訛紝鎺ュ湪鏈鍓嶉潰*/<BR> }}<BR> return 1;<BR>}<BR>void DestroyList(EvenList *L)/*閿姣佽〃*/<BR>{LNode *p;<BR> while(*L)<BR>   {p=(*L)->next;free(*L);*L=p;}<BR>}<BR>int InitQueue(LinkQueue *Q)/*鍒濆鍖栭槦鍒?/<BR>{ Q->front=Q->rear=(QueuePtr)malloc(sizeof(QNode));<BR> if(!Q->front) exit(0);<BR> (Q->front)->next=NULL;<BR> return OK;<BR>}<BR>int DestroyQueue(LinkQueue *Q)/*閿姣侀槦鍒?/<BR>{ while(Q->front)<BR>    { Q->rear=Q->front->next;<BR>     free(Q->front);<BR>     Q->front=Q->rear;<BR>    }<BR> return OK;<BR>}<BR>int EnQueue(LinkQueue *Q,QElemType e)/*鎻掑湪闃熸渶鍚?/<BR>{QueuePtr p;<BR> p=(QueuePtr)malloc(sizeof(QNode));<BR> if(!p) exit(0);<BR> p->elem=e;p->next=NULL;<BR> (Q->rear)->next=p;<BR> Q->rear=p;/*閲嶆柊璁劇疆闃熷熬*/<BR> return OK;<BR>}<BR>int QueueEmpty(LinkQueue Q)<BR>{ if(Q.front==Q.rear) return OK;<BR> else return 0;}<BR>int DelQueue(LinkQueue *Q,QElemType *e)/*鍒犻櫎闃熺殑絎竴涓厓绱?/<BR>{QueuePtr p;<BR> if(QueueEmpty(*Q)) return ERROR;<BR> p=(Q->front)->next;<BR> *e=p->elem;<BR> (Q->front)->next=p->next;<BR> if(Q->rear==p) Q->rear=Q->front;<BR> free(p);<BR> return OK;<BR>}<BR>void GetHead(LinkQueue Q,QElemType *a)<BR>{QNode *p;<BR> if(Q.front==Q.rear) exit(0);<BR> p=(Q.front)->next;<BR> *a=p->elem;<BR>}<BR>int QueueLength(LinkQueue Q)/*闃熺殑闀垮害*/<BR>{ int i=0;<BR> QNode *pc;<BR> if(Q.front==Q.rear) return 0;<BR> pc=Q.front;<BR> while(pc->next)<BR> {i++;pc=pc->next;}<BR> return i;<BR>}<BR>int Mininum(LinkQueue *Q)/*姹傞暱搴︽渶鐭殑闃?/<BR>{ int a[4],e,j,i;<BR>  for(i=1;i<=4;i++)<BR>      a[i-1]=QueueLength(Q[i]);<BR>  e=a[0];j=1;<BR>  for(i=1;i<=3;i++)<BR>      if(e>a[i]) {e=a[i];j=i+1;}<BR>  return j;<BR>}<BR>void OpenForDay()/*鍒濆鍖栨搷浣?/<BR>{ int i;<BR>  TotalTime=0;CustomerNum=0;/*鍒濆鍖栫瘡璁℃椂闂村拰瀹㈡埛鏁?/<BR>  InitList(&ev);<BR>  en.OccurTime=0;en.NType=0;/*璁懼畾絎竴涓鎴峰埌杈句簨浠?/<BR>  OrderInsert(&ev,en,compare);/*鎶婂畠鎻掑叆浜嬩歡琛?/<BR>  for(i=1;i<=4;i++) InitQueue(&q[i]);/*緗┖闃熷垪*/<BR>}<BR>void Random(int *a,int *b)/*鐢熸垚闅忔満鏁幫紝a涓烘瘡涓鎴峰姙鐞嗘椂闂村湪30鍒嗛挓鍐咃紝<BR>                           b 涓轟袱鐩擱殧瀹㈡埛鍒拌揪鐨勯棿闅旀椂闂翠笉瓚呰繃5鍒嗛挓*/<BR>{ *a=0+rand()%30;*b=0+rand()%5;}<BR>void CustomerArrived()/*澶勭悊瀹㈡埛鍒拌揪浜嬩歡*/<BR>{int durtime,intertime,t,i,b;<BR> ++CustomerNum;/*璁板綍瀹㈡埛鏁?/<BR> Random(&durtime,&intertime);<BR> b=en.OccurTime;<BR> t=en.OccurTime+intertime;/*涓嬩竴瀹㈡埛鍒拌揪鏃跺埢*/<BR> if(t<CloseTime)<BR>    {en.OccurTime=t;en.NType=0;  <BR>     OrderInsert(&ev,en,compare);<BR>    }<BR> i=Mininum(q);/*姹傞槦鍒楁渶鐭?/<BR> customer.ArrivalTime=b;customer.Duration=durtime;/*涓鴻鎻掑叆闃熺殑瀹㈡埛璁劇疆鍒拌揪鏃墮棿鍜屽姙鐞嗘墍闇鏃墮棿*/<BR> EnQueue(&q[i],customer);<BR> if(QueueLength(q[i])==1)<BR>     {en.OccurTime=b+durtime;en.NType=i;<BR>      OrderInsert(&ev,en,compare);/*璁懼畾絎琲 涓寮浜嬩歡騫舵彃鍏ヤ簨浠惰〃*/<BR>      }<BR>}<BR>void CustomerDeparture()/*澶勭悊瀹㈡埛紱誨紑浜嬩歡*/<BR>{int i;<BR> i=en.NType;DelQueue(&q[i],&customer);/*鍒犻櫎絎琲闃熷垪鐨勬帓澶村鎴?/<BR> TotalTime+=en.OccurTime-customer.ArrivalTime;/*绱瀹㈡埛閫楃暀鏃墮棿*/<BR> if(!QueueEmpty(q[i]))/*璁懼畾絎琲闃熷垪鐨勪竴涓皢瑕佺寮浜嬩歡騫舵彃鍏ヤ簨浠惰〃*/<BR>    { GetHead(q[i],&customer);/*寰楀埌瀹冪殑璧勬枡*/<BR>     en.OccurTime+=customer.Duration;en.NType=i;<BR>     OrderInsert(&ev,en,compare);<BR>     }<BR>}<BR>void Bank_Simulation()<BR>{<BR> OpenForDay();/*鍒濆鍖?/<BR> while(!ListEmpty(*ev))/*闈炵┖鏃訛紝鍒犳帀琛ㄩ噷鐨勭涓涓?/<BR>   { DelFirst(&ev,&en);<BR>     if(en.NType==0)<BR>  CustomerArrived();/*鏄鎴瘋繕娌″姙鐞嗙殑錛屽氨澶勭悊鍒拌揪浜嬩歡*/<BR>     else CustomerDeparture();/*鍚﹀垯澶勭悊紱誨紑浜嬩歡*/<BR>   }<BR> printf("The Average Time is %.2f\n",(float)TotalTime/CustomerNum);<BR>}<BR>void main()<BR>{scanf("%d",&CloseTime);/*杈撳叆鍏抽棬鏃墮棿*/<BR> Bank_Simulation();<BR> getch();<BR>}<BR></P><img src ="http://www.shnenglu.com/lance123/aggbug/706.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/lance123/" target="_blank">鏃犳儏闆?/a> 2005-10-18 23:23 <a href="http://www.shnenglu.com/lance123/articles/706.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鏍堢殑瀹炵幇涓庤〃紺猴紝浠ュ強鏁板埗杞崲錛岀鍙烽厤瀵圭殑闂 http://www.shnenglu.com/lance123/articles/674.html鏃犳儏闆?/dc:creator>鏃犳儏闆?/author>Thu, 13 Oct 2005 16:05:00 GMThttp://www.shnenglu.com/lance123/articles/674.htmlhttp://www.shnenglu.com/lance123/comments/674.htmlhttp://www.shnenglu.com/lance123/articles/674.html#Feedback0http://www.shnenglu.com/lance123/comments/commentRss/674.htmlhttp://www.shnenglu.com/lance123/services/trackbacks/674.html 

 

 

浠ヤ笅鏄爤鐨勪竴浜涘熀鏈搷浣滐細

#define STACK_INIT_SIZE 10

#define STACKINCREMENT 2

typedef struct

{

  SElemType *base;

  SElemType *top;

  int stacksize;

} Sqstack;

 

int InitStack(Sqstack &S)

{

  if(!(S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType))))

         exit(OVERFLOW);

  S.top=S.base;

  S.stacksize=STACK_INIT_SIZE;

  return OK;

}

 

int DestroyStack(Sqstack &S)

{

  free(S.base);

  S.base=NULL;

  S.top=NULL;

  S.stacksize=0;

  return OK;

}

 

int ClearStack(Sqstack &S)

{

  S.top=S.base;

  return OK;

}

 

int StackEmpty(Sqstack S)

{

  if(S.top==S.base)

  return TRUE;

  else

  return FALSE;

}

 

int StackLength(Sqstack S)

{

  return S.top-S.base;

}

 

int GetTop(Sqstack S,SElemType &e)

{

  if(S.top>S.base)

  {

    e=*(S.top-1);

    return OK;

  }

  else

  return ERROR;

}

 

int Push(Sqstack &S,SElemType e)

{

  if(S.top-S.base>=S.stacksize)

  {

    S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));

    if(!S.base)

    exit(OVERFLOW);

    S.top=S.base+S.stacksize;

    S.stacksize+=STACKINCREMENT;

  }

  *(S.top)++=e;

  return OK;

}

 

int Pop(Sqstack &S,SElemType &e)

{

  if(S.top==S.base)

  return FALSE;

  e=*--S.top;

  return OK;

}

 

int StackTraverse(Sqstack &S,SElemType (*visit)(SElemType))

{

  while(S.top>S.base)

    visit(*S.base++);

    return OK;

}

 

 

 

 

 

 

 

 

1錛庢暟鍒惰漿鎹?/SPAN>:

灝嗕竴涓崄榪涘埗杞崲鎴愬叓錛屽崄鍏繘鍒舵暟銆?/SPAN>

typedef int SElemType; // 瀹氫箟鏍堝厓绱犵被鍨嬩負鏁村瀷

 #include"c1.h"

 //#include"c3-1.h" // 閲囩敤欏哄簭鏍?/SPAN>

 #include"c2.cpp" // 鍒╃敤欏哄簭鏍堢殑鍩烘湰鎿嶄綔

 

 /*void conversion()

 { // 瀵逛簬杈撳叆鐨勪換鎰忎竴涓潪璐?/SPAN>10榪涘埗鏁存暟錛屾墦鍗拌緭鍑轟笌鍏剁瓑鍊肩殑16榪涘埗鏁?/SPAN>

   SqStack s;

   unsigned n; // 闈炶礋鏁存暟

   SElemType e;

   InitStack(s); // 鍒濆鍖栨爤

   printf("n(>=0)=");

   scanf("%u",&n); // 杈撳叆闈炶礋鍗佽繘鍒舵暣鏁?/SPAN>n

   while(n) // 褰?/SPAN>n涓嶇瓑浜?/SPAN>0

   {

     Push(s,n%16); // 鍏ユ爤n闄や互16鐨勪綑鏁?/SPAN>(16榪涘埗鐨勪綆浣?/SPAN>)

     n=n/16;

   }

   while(!StackEmpty(s)) // 褰撴爤涓嶇┖

   {

     Pop(s,e); // 寮瑰嚭鏍堥《鍏冪礌涓旇祴鍊肩粰e

     if(e<=9)

       printf("%d",e);

     else

       printf("%c",e+55);

   }

   printf("\n");

 }*/

 

 void conversion()

{

  Sqstack S;

  unsigned N;

  SElemType e;

  InitStack(S);

  scanf("%u",&N);

  while(N)

  {

    Push(S,N%8);

    N=N/8;

  }

  while(!StackEmpty(S))

  {

    Pop(S,e);

    printf("%d",e);

  }

}

 

 void main()

 {

   conversion();

 }

 

 

 

 

2.鎷彿閰嶅鐨勬楠?/SPAN>:

typedef char SElemType;

#include"c1.h"

#include"c2.cpp"

 

void matching()

{

  Sqstack S;

  InitStack(S);

  char *p,a[100],e;

  int state;

  printf("璇瘋緭鍏ヤ竴緇勭鍙?/SPAN>(浠呭彧鑳藉惈鏈変笁縐?/SPAN>{},(),[]):");

  gets(a);

  p=a;

  state=1;

  while(*p && state)

  {

         if(!(*p=='{' || *p=='}' || *p=='[' || *p==']' || *p=='(' || *p==')'))

         {

                printf("杈撳叆涓嶆紜?/SPAN>!");

                exit(ERROR);

         }

    switch (*p)

       {

       case '(':

          case '{':

       case '[':{

          Push(S,*p++);

             break;

                            }

       case ')':{

                GetTop(S,e);

          if(!StackEmpty(S) && e=='(')

                {

               Pop(S,e);

                     p++;

                }

               else

                   state=0;

             break;

                            }

       case ']':{

                 GetTop(S,e);

          if(!StackEmpty(S) && e=='[')

                {

                Pop(S,e);

                   p++;

                }

             else

                state=0;

            break;

                            }

                 case '}':{

                 GetTop(S,e);

          if(!StackEmpty(S) && e=='{')

                {

                Pop(S,e);

                   p++;

                }

             else

                state=0;

            break;

                            }

       }

   

  }

  if(StackEmpty(S) && state)

         printf("杈撳叆鐨勬嫭鍙風浉絎﹀悎!");

  else

        printf("杈撳叆鐨勬嫭鍙蜂笉絎﹀悎!");

}

 

/*void check()

 { // 瀵逛簬杈撳叆鐨勪換鎰忎竴涓瓧絎︿覆錛屾楠屾嫭鍙鋒槸鍚﹂厤瀵?/SPAN>

   Sqstack s;

   SElemType ch[80],*p,e;

   if(InitStack(s)) // 鍒濆鍖栨爤鎴愬姛

   {

     printf("璇瘋緭鍏ヨ〃杈懼紡\n");

     gets(ch);

     p=ch;

     while(*p) // 娌″埌涓插熬

       switch(*p)

       {

         case '(':

         case '[':Push(s,*p++);

                  break; // 宸︽嫭鍙峰叆鏍堬紝涓?/SPAN>p++

         case ')':

         case ']':if(!StackEmpty(s)) // 鏍堜笉絀?/SPAN>

                  {

                    Pop(s,e); // 寮瑰嚭鏍堥《鍏冪礌

                    if(*p==')'&&e!='('||*p==']'&&e!='[') // 寮瑰嚭鐨勬爤欏跺厓绱犱笌*p涓嶉厤瀵?/SPAN>

                    {

                      printf("宸﹀彸鎷彿涓嶉厤瀵?/SPAN>\n");

                      exit(ERROR);

                    }

                    else

                    {

                      p++;

                      break; // 璺沖嚭switch璇彞

                    }

                  }

                  else // 鏍堢┖

                  {

                    printf("緙轟箯宸︽嫭鍙?/SPAN>\n");

                    exit(ERROR);

                  }

         default: p++; // 鍏跺畠瀛楃涓嶅鐞嗭紝鎸囬拡鍚戝悗縐?/SPAN>

       }

     if(StackEmpty(s)) // 瀛楃涓茬粨鏉熸椂鏍堢┖

       printf("鎷彿鍖歸厤\n");

     else

       printf("緙轟箯鍙蟲嫭鍙?/SPAN>\n");

   }

 }*/

 

void main()

{

       //char a[]={[(]])]};

       matching();

   //check();

}



]]>
鍙屽悜寰幆閾捐〃鐨勫疄鐜?錛h璦)http://www.shnenglu.com/lance123/articles/654.html鏃犳儏闆?/dc:creator>鏃犳儏闆?/author>Tue, 11 Oct 2005 15:10:00 GMThttp://www.shnenglu.com/lance123/articles/654.htmlhttp://www.shnenglu.com/lance123/comments/654.htmlhttp://www.shnenglu.com/lance123/articles/654.html#Feedback0http://www.shnenglu.com/lance123/comments/commentRss/654.htmlhttp://www.shnenglu.com/lance123/services/trackbacks/654.html // 綰挎ц〃鐨勫弻鍚戦摼琛ㄥ瓨鍌ㄧ粨鏋?BR> typedef struct DuLNode
 {
   ElemType data;
   DuLNode *prior,*next;
 }DuLNode,*DuLinkList;

鍙岄摼寰幆綰挎ц〃(瀛樺偍緇撴瀯鐢眂2-4.h瀹氫箟)鐨勫熀鏈搷浣?14涓?
 Status InitList(DuLinkList &L)
 { // 浜х敓絀虹殑鍙屽悜寰幆閾捐〃L
   L=(DuLinkList)malloc(sizeof(DuLNode));
   if(L)
   {
     L->next=L->prior=L;
     return OK;
   }
   else
     return OVERFLOW;
 }

 Status DestroyList(DuLinkList &L)
 { // 鎿嶄綔緇撴灉錛氶攢姣佸弻鍚戝驚鐜摼琛↙
   DuLinkList q,p=L->next; // p鎸囧悜絎竴涓粨鐐?BR>   while(p!=L) // p娌″埌琛ㄥご
   {
     q=p->next;
     free(p);
     p=q;
   }
   free(L);
   L=NULL;
   return OK;
 }

 Status ClearList(DuLinkList L) // 涓嶆敼鍙楲
 { // 鍒濆鏉′歡錛歀宸插瓨鍦ㄣ傛搷浣滅粨鏋滐細灝哃閲嶇疆涓虹┖琛?BR>   DuLinkList q,p=L->next; // p鎸囧悜絎竴涓粨鐐?BR>   while(p!=L) // p娌″埌琛ㄥご
   {
     q=p->next;
     free(p);
     p=q;
   }
   L->next=L->prior=L; // 澶寸粨鐐圭殑涓や釜鎸囬拡鍩熷潎鎸囧悜鑷韓
   return OK;
 }

 Status ListEmpty(DuLinkList L)
 { // 鍒濆鏉′歡錛氱嚎鎬ц〃L宸插瓨鍦ㄣ傛搷浣滅粨鏋滐細鑻涓虹┖琛紝鍒欒繑鍥濼RUE錛屽惁鍒欒繑鍥濬ALSE
   if(L->next==L&&L->prior==L)
     return TRUE;
   else
     return FALSE;
 }

 int ListLength(DuLinkList L)
 { // 鍒濆鏉′歡錛歀宸插瓨鍦ㄣ傛搷浣滅粨鏋滐細榪斿洖L涓暟鎹厓绱犱釜鏁?BR>   int i=0;
   DuLinkList p=L->next; // p鎸囧悜絎竴涓粨鐐?BR>   while(p!=L) // p娌″埌琛ㄥご
   {
     i++;
     p=p->next;
   }
   return i;
 }

 Status GetElem(DuLinkList L,int i,ElemType &e)
 { // 褰撶i涓厓绱犲瓨鍦ㄦ椂,鍏跺艱祴緇檈騫惰繑鍥濷K,鍚﹀垯榪斿洖ERROR
   int j=1; // j涓鴻鏁板櫒
   DuLinkList p=L->next; // p鎸囧悜絎竴涓粨鐐?BR>   while(p!=L&&j<i) // 欏烘寚閽堝悜鍚庢煡鎵?鐩村埌p鎸囧悜絎琲涓厓绱犳垨p鎸囧悜澶寸粨鐐?BR>   {
     p=p->next;
     j++;
   }
   if(p==L||j>i) // 絎琲涓厓绱犱笉瀛樺湪
     return ERROR;
   e=p->data; // 鍙栫i涓厓绱?BR>   return OK;
 }

 int LocateElem(DuLinkList L,ElemType e,Status(*compare)(ElemType,ElemType))
 { // 鍒濆鏉′歡錛歀宸插瓨鍦紝compare()鏄暟鎹厓绱犲垽瀹氬嚱鏁?BR>   // 鎿嶄綔緇撴灉錛氳繑鍥濴涓1涓笌e婊¤凍鍏崇郴compare()鐨勬暟鎹厓绱犵殑浣嶅簭銆?BR>   //           鑻ヨ繖鏍風殑鏁版嵁鍏冪礌涓嶅瓨鍦紝鍒欒繑鍥炲間負0
   int i=0;
   DuLinkList p=L->next; // p鎸囧悜絎?涓厓绱?BR>   while(p!=L)
   {
     i++;
     if(compare(p->data,e)) // 鎵懼埌榪欐牱鐨勬暟鎹厓绱?BR>       return i;
     p=p->next;
   }
   return 0;
 }

 Status PriorElem(DuLinkList L,ElemType cur_e,ElemType &pre_e)
 { // 鎿嶄綔緇撴灉錛氳嫢cur_e鏄疞鐨勬暟鎹厓绱狅紝涓斾笉鏄涓涓紝鍒欑敤pre_e榪斿洖瀹冪殑鍓嶉┍錛?BR>   //           鍓嶉┍錛屽惁鍒欐搷浣滃け璐ワ紝pre_e鏃犲畾涔?BR>   DuLinkList p=L->next->next; // p鎸囧悜絎?涓厓绱?BR>   while(p!=L) // p娌″埌琛ㄥご
   {
     if(p->data==cur_e)
     {
       pre_e=p->prior->data;
       return TRUE;
     }
     p=p->next;
   }
   return FALSE;
 }

 Status NextElem(DuLinkList L,ElemType cur_e,ElemType &next_e)
 { // 鎿嶄綔緇撴灉錛氳嫢cur_e鏄疞鐨勬暟鎹厓绱狅紝涓斾笉鏄渶鍚庝竴涓紝鍒欑敤next_e榪斿洖瀹冪殑鍚庣戶錛?BR>   //           鍚﹀垯鎿嶄綔澶辮觸錛宯ext_e鏃犲畾涔?BR>   DuLinkList p=L->next->next; // p鎸囧悜絎?涓厓绱?BR>   while(p!=L) // p娌″埌琛ㄥご
   {
     if(p->prior->data==cur_e)
     {
       next_e=p->data;
       return TRUE;
     }
     p=p->next;
   }
   return FALSE;
 }

 DuLinkList GetElemP(DuLinkList L,int i) // 鍙﹀姞
 { // 鍦ㄥ弻鍚戦摼琛↙涓繑鍥炵i涓厓绱犵殑浣嶇疆鎸囬拡(綆楁硶2.18銆?.19瑕佽皟鐢ㄧ殑鍑芥暟)
   int j;
   DuLinkList p=L;
   for(j=1;j<=i;j++)
     p=p->next;
   return p;
 }

 Status ListInsert(DuLinkList L,int i,ElemType e) // 鏀硅繘綆楁硶2.18
 { // 鍦ㄥ甫澶寸粨鐐圭殑鍙岄摼寰幆綰挎ц〃L涓i涓綅緗箣鍓嶆彃鍏ュ厓绱爀錛宨鐨勫悎娉曞間負1鈮鈮よ〃闀?1
   DuLinkList p,s;
   if(i<1||i>ListLength(L)+1) // i鍊間笉鍚堟硶
     return ERROR;
   p=GetElemP(L,i-1); // 鍦↙涓‘瀹氱i-1涓厓绱犵殑浣嶇疆鎸囬拡p
   if(!p) // p=NULL,鍗崇i-1涓厓绱犱笉瀛樺湪
     return ERROR;
   s=(DuLinkList)malloc(sizeof(DuLNode));
   if(!s)
     return OVERFLOW;
   s->data=e; // 鍦ㄧi-1涓厓绱犱箣鍚庢彃鍏?BR>   s->prior=p;
   s->next=p->next;
   p->next->prior=s;
   p->next=s;
   return OK;
 }

 Status ListDelete(DuLinkList L,int i,ElemType &e) // 綆楁硶2.19
 { // 鍒犻櫎甯﹀ご緇撶偣鐨勫弻閾懼驚鐜嚎鎬ц〃L鐨勭i涓厓绱?i鐨勫悎娉曞間負1鈮鈮よ〃闀?1
   DuLinkList p;
   if(i<1||i>ListLength(L)) // i鍊間笉鍚堟硶
     return ERROR;
   p=GetElemP(L,i);  // 鍦↙涓‘瀹氱i涓厓绱犵殑浣嶇疆鎸囬拡p
   if(!p) // p=NULL,鍗崇i涓厓绱犱笉瀛樺湪
     return ERROR;
   e=p->data;
   p->prior->next=p->next;
   p->next->prior=p->prior;
   free(p);
   return OK;
 }

 void ListTraverse(DuLinkList L,void(*visit)(ElemType))
 { // 鐢卞弻閾懼驚鐜嚎鎬ц〃L鐨勫ご緇撶偣鍑哄彂,姝e簭瀵規瘡涓暟鎹厓绱犺皟鐢ㄥ嚱鏁皏isit()
   DuLinkList p=L->next; // p鎸囧悜澶寸粨鐐?BR>   while(p!=L)
   {
     visit(p->data);
     p=p->next;
   }
   printf("\n");
 }

 void ListTraverseBack(DuLinkList L,void(*visit)(ElemType))
 { // 鐢卞弻閾懼驚鐜嚎鎬ц〃L鐨勫ご緇撶偣鍑哄彂,閫嗗簭瀵規瘡涓暟鎹厓绱犺皟鐢ㄥ嚱鏁皏isit()銆傚彟鍔?BR>   DuLinkList p=L->prior; // p鎸囧悜灝劇粨鐐?BR>   while(p!=L)
   {
     visit(p->data);
     p=p->prior;
   }
   printf("\n");
 }



]]>
綰挎ч摼琛ㄧ殑鎿嶄綔錛堬跡璇█錛?/title><link>http://www.shnenglu.com/lance123/articles/653.html</link><dc:creator>鏃犳儏闆?/dc:creator><author>鏃犳儏闆?/author><pubDate>Tue, 11 Oct 2005 14:48:00 GMT</pubDate><guid>http://www.shnenglu.com/lance123/articles/653.html</guid><wfw:comment>http://www.shnenglu.com/lance123/comments/653.html</wfw:comment><comments>http://www.shnenglu.com/lance123/articles/653.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.shnenglu.com/lance123/comments/commentRss/653.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/lance123/services/trackbacks/653.html</trackback:ping><description><![CDATA[<P>struct Lnode  // 瀹氫箟閾捐〃綾誨瀷<BR>{<BR>  ElemType data;<BR>  struct Lnode *next;<BR> };<BR>  typedef struct Lnode *LinkList;</P> <P>  int InitList(LinkList &L)  //鍒濆鍖栦竴涓摼琛?BR>  {<BR>    L=(LinkList)malloc(sizeof(Lnode));<BR>    if(!L)<BR>     exit(OVERFLOW);<BR>     L->next=NULL;<BR>     return OK;<BR>  }</P> <P>  int DestroyList(LinkList &L)  //閿姣侀摼琛?BR>  {<BR>    LinkList q;<BR>    while(L)<BR>    {<BR>      q=L->next;<BR>      free(L);<BR>      L=q;<BR>    }<BR>    return OK;<BR>  }</P> <P>  int ClearList(LinkList L)  //娓呴浂鎿嶄綔<BR>  {<BR>    LinkList p,q;<BR>    q=L->next;<BR>    while(q)<BR>    {<BR>      p=q->next;<BR>      free(q);<BR>      q=p;<BR>    }<BR>    L->next=NULL;<BR>    return OK;<BR>  }</P> <P>  int ListEmpty(LinkList L)  //鍒ょ┖鎿嶄綔<BR>  {<BR>    if(L->next==NULL)<BR>    return TRUE;<BR>    else<BR>    return FALSE;<BR>  }</P> <P>  int ListLength(LinkList L)  //璁$畻閾捐〃鐨勯暱搴?BR>  {<BR>    LinkList p;<BR>    int i=0;<BR>    p=L->next;<BR>    while(p)<BR>    {<BR>      ++i;<BR>      p=p->next;<BR>    }<BR>    return i;<BR>  }</P> <P>  int GetElem(LinkList L,int i,ElemType e)  //寰楀埌絎琲涓厓绱犵殑鏁版嵁鍩?BR>  {<BR>    LinkList p;<BR>    int j=0;<BR>    p=L->next;<BR>    while(p && j<i-1)<BR>    { <BR>      p=p->next;<BR>      ++j;<BR>    }<BR>    if(j>i || !p)<BR>    return ERROR;<BR>    else<BR>    e=p->data;<BR>    return OK;<BR>  }</P> <P>  int LocateElem(LinkList L,ElemType e,int (*compare)(ElemType,ElemType))<BR>  {                       //鎵懼埌絎竴涓浜嶦婊¤凍鍑芥暟鐨勬暟鎹厓绱犵殑浣嶇疆<BR>    LinkList p;<BR>    int i=0;<BR>    p=L->next;<BR>    while(p)<BR>    {<BR>      ++i;<BR>      if(compare(p->data,e))<BR>      return i;<BR>      p=p->next;<BR>    }<BR>    return 0;<BR>  }</P> <P>  int InsertList(LinkList L,int i,ElemType e)  //鍦ㄧi涓暟鎹厓绱犱笂鎻掑叆涓涓厓绱?BR>  {<BR>    LinkList p,s;<BR>    int j=0;<BR>    p=L;<BR>    while(p && j<i-1)<BR>    {<BR>      p=p->next;<BR>      ++j;<BR>    }<BR>    if(!p || j>i)<BR>    return ERROR;<BR>    s=(LinkList)malloc(sizeof(Lnode));<BR>    s->data=e;<BR>    s->next=p->next;<BR>    p->next=s;<BR>    return OK;<BR>  }</P> <P>  int DeleteList(LinkList &L,int i,ElemType e) //鍒犻櫎絎琲涓厓绱?BR>  {<BR>    LinkList p,q;<BR>    int j;<BR>    j=0;<BR>    p=L;<BR>    while(p->next && j<i-1)<BR>    {<BR>     p=p->next;<BR>     ++j;<BR>    }<BR>    if(!p->next || j>i)<BR>    return ERROR;<BR>    q=p->next;<BR>    p->next=q->next;<BR>    e=q->data;<BR>    free(q);<BR>    return OK;<BR>  }</P> <P>  int ListTraverse(LinkList L,int (*vi)(ElemType)) <BR>  //瀵規墍鏈夐摼琛ㄤ腑鐨勫厓绱犺繘琛屽嚱鏁皏i鎿嶄綔<BR>  {<BR>    LinkList p;<BR>    p=L->next;<BR>    while(p)<BR>    {<BR>      vi(p->data);<BR>      p=p->next;<BR>    }<BR>    return OK;<BR>  }</P> <P>  void MergeList(LinkList La,LinkList Lb,LinkList &Lc)<BR>  {                              //鍚堝茍浜屼釜闈為掑噺鐨凩a鍜孡b寰楀埌涓涓潪閫掑噺鐨凩c<BR>    LinkList pa,pb,pc;<BR>    pa=La->next;<BR>    pb=Lb->next;<BR>    Lc=pc=La;<BR>    while(pa && pb)<BR>    {<BR>      if(pa->data <= pb->data)<BR>      {<BR>        pc->next=pa;<BR> pc=pa;<BR> pa=pa->next;<BR>      }<BR>      else{<BR>        pc->next=pb;<BR> pc=pb;<BR> pb=pb->next;<BR>      }<BR>    }<BR>    pc->next=pa?pa:pb;<BR>    free(Lb);<BR> Lb=NULL;<BR>  }<BR></P><img src ="http://www.shnenglu.com/lance123/aggbug/653.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/lance123/" target="_blank">鏃犳儏闆?/a> 2005-10-11 22:48 <a href="http://www.shnenglu.com/lance123/articles/653.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>綰挎ц〃鐨勯『搴忚〃紺?C璇█)http://www.shnenglu.com/lance123/articles/617.html鏃犳儏闆?/dc:creator>鏃犳儏闆?/author>Mon, 10 Oct 2005 16:59:00 GMThttp://www.shnenglu.com/lance123/articles/617.htmlhttp://www.shnenglu.com/lance123/comments/617.htmlhttp://www.shnenglu.com/lance123/articles/617.html#Feedback2http://www.shnenglu.com/lance123/comments/commentRss/617.htmlhttp://www.shnenglu.com/lance123/services/trackbacks/617.html綰挎ц〃鐨勯『搴忚〃紺猴細

 

#define LIST_INIT_SIZE 100    瀹氫箟涓涓嚎鎬ц〃綾誨瀷

#define LISTINCREMENT 10

typedef struct

{

  ElemType *elem; 鍩哄潃

  int length; 鍏冪礌鐨勯暱搴?/SPAN>

  int listsize;褰撳墠鐨勫瓨鍌ㄥ閲?/SPAN>

 }Sqlist;

 

 void InitList_Sq(Sqlist &L)  鍒濆鍖栨搷浣?/SPAN>

 {

   L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));

   if(!L.elem)

   return overflow;

   L.length=0;

   L.listsize=LIST_INIT_SIZE;

   return ok;

 }

 

 void DestroyList_Sq(Sqlist &L)  閿姣佺嚎鎬ц〃

 {

   free(L.elem);

   L.elem=NULL;

   L.length=0;

   L.listsize=0;

   return ok;

 }

 

void ClearList(Sqlist L)  娓呴浂鎿嶄綔

{

  L.length=0;

  return ok;

}

 

void ListEmpty(Sqlist L)  鍒ょ┖鎿嶄綔

{

  if(L.length=0)

   return True;

   else

   return False;

}

 

int ListLength(Sqlist L)  杈撳嚭琛ㄧ殑闀垮害錛屾暟鎹厓绱犱釜鏁?/SPAN>

{

  return L.length;

}

 

void GetElem(Sqlist &L,int i,ElemType &e) 寰楀埌絎?/SPAN>I 涓厓绱犵殑鏁版嵁鍏冪礌鐨勫?/SPAN>

{

   if(i<1 || i>L.length)

   return error;

   e=*(L.elem+i-1);

   return ok;

}

 

int LocateElem(Sqlist &L,ElemType e,void (*compare)(ElemType,ElemType)) 鏌ユ壘涓?/SPAN>E鐩哥瓑鐨勫厓绱犵殑浣嶇疆

{

  ElemType *p;

  i=1;

  while(i<=L.length && !compare(*p++,e))

  ++i;

  if(i<=L.length)

  return i;

  else

  return 0;

}

 

void PriorElem(Sqlist L,ElemType cur_e,ElemType pre_e)  寰楀埌緇欏嚭鐨勬暟鐨勫墠涓涓厓绱犲?/SPAN>

{

  int i=2;

  ElemType *p;

  p=L.elem+1;

  while(i<=L.length && !(*p++==cur_e))

  ++i;

  if(i>L.length)

  return INFEASIBLE;

  else

  {

    pre_e=*--p;

    return OK;

  }

}

 

void NextElem(Sqlist L,ElemType pre_e,ElemType cur_e)  寰楀埌鍚庝竴涓厓绱犵殑鍊?/SPAN>

{

  int i=1;

  ElemType *p

  p=L.elem;

  while(i<L.length && !(*p++==pre_e))

  ++i;

  if(i>=L.length)

  return INFEASIBLE;

  else

  {

    cur_e=*++p;

    return OK;

  }

}

 

void InsertElem(Sqlist &L,int i,ElemType e)  鍦ㄧI涓厓绱犱腑鎻掑叆涓涓間負E鐨勫厓绱?/SPAN>

{

  if(i<1 || i>=length+1)

  return ERROR;

  if(L.length>=L.listsize)

  {

 if(!newbase=(ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)

    *sizeof(ElemType))))

    return OVERFLOW;

    L.elem=newbase;

    L.listsize+=LISTINCREMENT;

  }

  p=L.elem+L.length-1;

  q=L.elem+i-1;

  for(p;p>=q;--p)

  *(p+1)=*p;

  *q=e;

  ++L.length;

  return ok;

}

 

void DeleteElem(Sqlist &L,int i,ElemType e)  鍒犻櫎絎?/SPAN>I涓厓绱?/SPAN>

{

  if(i<1 || i>=L.length)

  return FALSE;

  p=L.elem+i-1;

  q=L.elem+L.length-1;

  e=*p;

  for(p;p<=q;++p)

  *p=*(p+1);

  --L.length;

  return OK;

}

 

void ListTraverse(Sqlist &L,void (*vi)(ElemType))  瀵圭嚎鎬ц〃榪涜VI鐨勬搷浣?/SPAN>

{

  int i;

  ElemType *p;

  p=L.elem;

  for(i=1;i<=L.length;++i)

  vi(*p++);

  return OK;

}


浠ヤ笂鏄嚎鎬ц〃鐨勪竴浜涘父鐢ㄧ殑鍘熸搷浣? 

 

渚嬶細

1錛庢眰涓涓柊鐨勯泦鍚?/SPAN>A=A U B銆?/SPAN>

void union(Sqlist &LA,Sqlist LB)

{

  la_len=LA.length;

  lb_len=LB.length;

  for(i=1;i<=lb_len;++i)

  {

   GetElem(LB,i,e);

   if(!Locate(LA,e,compare()))

   InsertList(LA,++la_len,e);

  }

  return OK;

}

 

2.灝嗕簩涓潪閫掑噺鐨?/SPAN>LA琛ㄥ拰LB琛ㄥ綊騫朵負涓涓柊鐨勯潪閫掑噺鐨?/SPAN>LC琛?/SPAN>

void MergeList(Sqlist LA,Sqlist LB,Sqlist &LC)

{

  i=j=1;k=0;

  InitList(LC);

  while(i<=LA.length && j<=LB.length)

  {

   GetElem(LA,i,ai);

   GetElem(LB,j,bj);

   if(ai<=bj)

   {

     InsertList(LC,++k,ai);

     ++i;

   }

   else

   {

     InsertList(LC,++k,bj);

     ++j;

   }

  }

  while(i<=LA.length)

  {

    GetElem(LA,i,ai);

    InsertList(LC,++k,ai);

    ++i;

  }

  while(j<=LB.length)

  {

    GetElem(LB,i,bj);

    InsertList(LC,++k,bj);

    ++j;

  }

  return OK;

}



]]>
噜噜噜色噜噜噜久久| 国产精品午夜久久| 日日躁夜夜躁狠狠久久AV| 无码精品久久久久久人妻中字 | 无码专区久久综合久中文字幕| 99久久国产宗和精品1上映| 欧美午夜精品久久久久免费视| 久久国产免费观看精品| 久久久WWW成人| 午夜久久久久久禁播电影| 国产精品久久久久天天影视| 久久久久97国产精华液好用吗| 久久久国产99久久国产一| 国产亚洲精品美女久久久| 久久国产三级无码一区二区| 亚洲精品高清国产一线久久| 亚洲国产精品久久| 久久久久国产精品嫩草影院| 青青草国产精品久久| 久久这里只有精品首页| 国产精品久久99| 三级三级久久三级久久| 一本久久a久久精品综合夜夜| 久久免费看黄a级毛片| 品成人欧美大片久久国产欧美...| 久久精品国产免费观看三人同眠| 日韩一区二区久久久久久| 久久精品国产亚洲av麻豆图片| 青青草原综合久久| 久久久久久夜精品精品免费啦| 日韩亚洲国产综合久久久| 久久99国产精一区二区三区| 亚洲国产精品无码久久一线| 欧美午夜精品久久久久久浪潮| 久久国产精品-久久精品| 亚洲国产另类久久久精品小说| 久久久久亚洲精品无码网址| 久久精品国产只有精品2020| 久久久久久久久无码精品亚洲日韩 | 国产一级持黄大片99久久| 久久妇女高潮几次MBA|