1、int getelem(list l,int i,elem &e) e=*(l.head+i-1);int lctelem(list l,elem e) int i=0;for(i;il.size) l.head=(elem *)realloc(l.head,(l.size+incrment)*sizeof(elem);if(il.lenth|ii;j-) *(l.head+j-1)=*(l.head+j-2);*(l.head+i-1)=e;int dlt(list &l,int i) l.lenth)return -1;l.lenth-;l.lenth+1|ifor(j=i;jl.lent
2、h+1;j+) *(l.head+j-1)=*(l.head+j);/以上就是数据结构的定义和操作部分void fun1() list l;int i;char e;init(l,20);insert(l,1,a);insert(l,2,binsert(l,3,dfor(i=1;=3;getelem(l,i,e);printf(%cn,e);nc=4;e=5;if(empty(l)printf(now the list is emptyndlt(l,1);=2;if(lctelem(l,)printf(b is in the listndestroy(l);void pr_min(list l
3、) elem min;min=*l.head;if(*(l.head+i)next=NULL;l)return 0;int lenth(linklist l) int j=1;linklist getl=l;while(getl-next) getl=getl-next;j+;return j;int put(linklist l,int i,elem e) for(j=1;/ find the i node if(!getl)return 0;getl-data=e;int addone(linklist l,linklist b) linklist cur_node=l;/find the
4、 last node while(cur_node-cur_node=cur_node-cur_node-next=b;b-int insert(linklist l,int i,linklist b) linklist q;i-1;/ find the i-1 node q=getl-next=q;int dlt(linklist l,int i) /find the i node next=q-free(q);int visit(linklist l) while(cur_node) ,cur_node-data);void dao_visit(linklist l) linklist r
5、cv=l;linklist rcv2=rcv;elem* a;int lenth=0;while(rcv) lenth+;rcv=rcv-a=(elem *)malloc(lenth*sizeof(elem);while(rcv2) ai=rcv2-data;rcv2=rcv2-i+;lenth;,alenth-1-i);/以上是数据结构定义,以及对它的操作void main() linklist ft;/a linklist a;/b linklist b;/c linklist c;/i / char *a;/ char b10=hello;/ a=b;/ printf(%s,a);cre
6、at(ft);creat(a);creat(b);creat(c);put(ft,1,addone(ft,a);put(ft,2,addone(ft,b);put(ft,3,insert(ft,3,c);idlt(ft,2);visit(ft);dao_visit(ft);%dn,lenth(ft);/ visit(b);,lenth(b); 数据结构3:栈 #includestdlib.hstdio.htypedef int elmtp;typedef struct elmtp * base;elmtp * top;int stksize;stack;int init(stack &s,in
7、t size) s.base=(elmtp *)malloc(size*sizeof(char);s.base)return 0;s.top=s.base;s.stksize=size;int push(stack &s,elmtp e) *s.top=e;s.top+;int gettop(stack s,elmtp &if(s.base=s.top)return 0;e=*(s.top-1);int pop(stack &s,elmtp &s.top-;/以上是。/下面这个main函数是将10进制数转为8进制void main() int n;stack s;init(s,10);scan
8、f(%d,&n);while(n) push(s,n%8);n=n/8;while(pop(s,n) %dt,n);数据结构4:树 #define pr printf int a=48;struct node struct node* parent;struct node* lchild;struct node* rchild;typedef struct node* root;int creat(root &r)/创建结点 r=(root)malloc(sizeof(node);r)return 0;r-parent=0;lchild=0;rchild=0;data=a+;/添加关系 voi
9、d addparent_lchild(root parent,root b) parent=parent;/成员赋值 parent-lchild=b;void addparent_rchild(root parent,root b) rchild=b;/先序遍历 void pre_traverse(root r) ,r-if(r-lchild) pre_traverse(r-lchild);rchild) rchild);/if(!(r-lchild|r-rchild) root r10;creat(r0);/pr(,r0-,r0); /536 r0-parent);/536 /540 /54
10、4 /548 random 7; &data=r+12;creat(r1);creat(r2);creat(r3);creat(r4);creat(r5);addparent_lchild(r0,r1);addparent_rchild(r0,r2);addparent_lchild(r1,r3);addparent_rchild(r1,r4);addparent_lchild(r2,r5);6;pr(,ri-pre_traverse(r0);附:一道程序题 12345 23456 34567 45678 从1开始到8结束,可以横向和纵向移动,每次一格,问,共有多少总路径代码:/#includ
11、e=s.stksize) s.base=(elem *)realloc(s.base,(s.stksize+increment)*sizeof(elem);s) / e=*(s.top-1);array a56;int i=0,j=0;int count=0;elem cur_e;/init position posion now=0,0;/init a56 4;for(j=0;5;aij.id=i+j+1;aij.de=0;ai5.id=0;ai5.de=0;a4j.id=0;a4j.de=0;/init stack init(s,30);/ for(i=0;/ / for(j=0;%d ,
12、aij.de);/ / i=j=0;/* cur_e.cur_p=now;cur_e.cur_a=anow.xnow.y;push(s,cur_e);while(empty(s) switch(gettop(s).cur_a.id) case 8:count+;pop(s);if(agettop(s).cur_p.xgettop(s).cur_p.y.de=1)now.y-;else now.x-;break;case 0:default:if(anow.xnow.y.de=0) anow.xnow.y.de+;now.y+;/ gettop(s).de+=1;/ x+;else if(anow.xnow.y.de=1) now.x+;else anow.xnow.y.de=0;if(empty(s) ,count);喜欢的话,多下几次,给好评吧
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1