link.rar

  • xxh_525
    了解作者
  • C/C++
    开发工具
  • 24KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 3
    下载次数
  • 2007-12-06 08:55
    上传日期
此程序在WinTC下编译,调试通过主要演示了双链表的应用。对学习链表有很大的帮助!
link.rar
  • 双链表的演示
  • link.c
    3.8KB
  • LINK.MAP
    14.2KB
  • e
    1B
  • LINK.OBJ
    1.5KB
  • LINK.EXE
    30KB
  • www.pudn.com.txt
    218B
内容介绍
/*链表的演示 2006.4.30 熊小辉 */ #include<stdio.h> #include<stdlib.h> #include<graphics.h> #include<math.h> #include<dos.h> //双链表的定义 typedef struct link { int dat; //数值 struct link *right,*left; //左右指针 int num; //num 表示数值所在的位置 }linkx,*linky; void init(void); void close(void); void initlist(void); void plink(linky first,int n); void main(void) { init(); //图形初始化 initlist(); //动态的建立链表 close(); //关闭图形 } //图形才驱动============================================================== void init(void)//图形的初始话 { int gdriver=DETECT,gmode; registerbgidriver(EGAVGA_driver); initgraph(&gdriver,&gmode,""); setbkcolor(0); cleardevice(); } //关闭图形函数================================================================= void close(void) { getch(); closegraph(); } //动态的建立链表================================================================ void initlist(void) { linky head,p,q,s; int j=4,n=0; char str[5],str1[5]; //randomizs(); setcolor(j++); outtextxy(250,20,"put any key to continue"); getch(); head=s=(linky)malloc(sizeof(linkx)); s->dat=random(100); s->num=n; sprintf(str,"%d",s->dat); setcolor(4); outtextxy(50+n*20,50,str); //sleep(1); s->right=NULL; s->left=NULL; plink(s,n) ; n++; while(n!=20) { s=(linky)malloc(sizeof(linkx)); s->dat=random(100); sprintf(str,"%d",s->dat); setcolor(j++); outtextxy(50+n*20,50,str); getch(); p=head; if(s->dat<=head->dat) { s->right=head; //插入头接点 s->left=NULL; s->num=0; head->left=s; head=s; q=head->right; while(q!=NULL) { q->num++; q=q->right; } plink(head,n) ; }//end if; else { while(s->dat>p->dat&&p!=NULL) { q=p; p=p->right; //逐个比较大小 } if(p==NULL) //表示在最尾端 { q->right=s; s->right=NULL; //插入尾接点 s->left=q; s->num=n; plink(head,n) ; } else { s->dat=s->dat; s->right=q->right; q->right->left=s; q->right=s; s->left=q; /* s->left=p->left; p->left->right=s; s->right=p; // 中间插入的方法 p->left=s; */ s->num=q->num+1; s=s->right; while(p!=NULL) { p->num++; p=p->right; } plink(head,n); } } //end else n++; }//end while }//end initlist; //显示表========================================================== void plink(linky first,int n) { int k=5; char str[5]; while(first!=NULL) { sprintf(str,"%d",first->dat); //显示各个值 setcolor(k); outtextxy(50+20*first->num,100+n*20,str); first=first->right; k=k+1; if(k==14) k=5; } }
评论
    相关推荐