设计一个类属集合类SET,集合中可以存放不同类型的对象;然后编写一个演示程序利用SET创建并使用整

设计一个类属集合类SET,集合中可以存放不同类型的对象;然后编写一个演示程序利用SET创建并使用整,第1张

package SetTest;

import javautilCollection;

import javautilIterator;

import javautilTreeSet;

public class TreeSetDemo {

/

@param args

/

public static void main(String[] args) {

// 利用treeset来演示添加string类型的数据

TreeSet<String> ts1=new TreeSet<String>();

ts1add("abc");

ts1add("hello");

ts1add("world");

ts1add("cba");

ts1add("nba");

Iterator<String> it=ts1iterator();

/ while(ithasNext())

{

Systemoutprintln(itnext());

}/

iteratorDemo(ts1);

//添加integer类型的数据

TreeSet<Integer> ts2=new TreeSet<Integer>();

ts2add(5);

ts2add(1);

ts2add(3);

ts2add(2);

ts2add(4);

/Iterator<Integer> it2=ts2iterator();

while(it2hasNext())

{

Systemoutprintln(it2next());

}/

iteratorDemo(ts2);

//添加student类型的数据

TreeSet<StudentDemo> ts3=new TreeSet<StudentDemo>();

ts3add(new StudentDemo("mike", 20));

ts3add(new StudentDemo("jike", 20));

ts3add(new StudentDemo("nike", 20));

ts3add(new StudentDemo("peak", 20));

/Iterator<StudentDemo> it3=ts3iterator();

while(it3hasNext())

{

Systemoutprintln(it3next());

}/

iteratorDemo(ts3);

}

public static void iteratorDemo(Collection<> coll)//定义公共方法

{

Iterator<> it=colliterator();

while(ithasNext())

{

Systemoutprintln(itnext());

}

}

}

学生类

package SetTest;

public class StudentDemo implements Comparable<StudentDemo> {

String name;

int age;

@Override

public int compareTo(StudentDemo s) {

int temp=thisage-sage;

return temp==0thisnamecompareTo(sname):temp;

}

public StudentDemo(String name,int age)

{

thisname=name;

thisage=age;

}

public String getName() {

return name;

}

public void setName(String name) {

thisname = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

thisage = age;

}

@Override

public String toString() {

return thisname+":"+thisage;

}

}

'窗体上建立两个列表框,两个命令按钮,第二个列表框的MultiSelect属性设置为2-Extended

Private Sub Command1_Click()

If List1SelCount > 0 Then

List2AddItem List1Text

List1RemoveItem List1ListIndex

End If

End Sub

Private Sub Command2_Click()

If List2SelCount > 0 Then

For i = 0 To List2ListCount - 1

If List2Selected(i) Then List1AddItem List2List(i)

Next

For i = List2ListCount - 1 To 0 Step -1

If List2Selected(i) Then List2RemoveItem i

Next

End If

End Sub

Private Sub Form_Load()

For i = 1 To 10

List1AddItem "第" & i & "个"

Next

End Sub

这个STI6608驱动器输入信号是Pluse+DIR方式控制,可以带2个步进电机。Reset可以置位步进电机到位置1。刚启动是置位1次就可以了。以下编一简单的演示程序:

#include<reg51h>

#define uchar unsigned char

#define uint unsigned char

sbit pluse1=P1^0;

sbit pluse2=P1^1;

sbit dir1=P1^2;

sbit dir2=P1^3;

sbit reset1=P1^4;

sbit reset2=P1^5;

void delay(uint a)

{

uint i;

while(a--)for(i=0;i<1100;i++);

}

main()

{

uint i;

reset1=0;

reset2=0;

delay(1000);

reset1=1;

reset2=1;

while(1)

    {

    for(i=0;i<4800;i++)

        {

        pluse1=~pluse1;

        dir1=1;

        delay(5);

        }

    for(i=0;i<4800;i++)

        {

        pluse2=~pluse2;

        dir2=1;

        delay(5);

        }

    for(i=0;i<4800;i++)

        {

        pluse1=~pluse1;

        dir1=0;

        delay(5);

    for(i=0;i<4800;i++)

        {

        pluse2=~pluse2;

        dir2=0;

        delay(5);

        }        

    }

}

试描述头指针、头结点、开始结点的区别,并说明头指针和头结点的作用。头指针:存放链表首地址的指针变量。头结点:链表的开始结点之前的一个同类型结点。开始结点:链表的第一个元素所在的结点。头指针的作用:用于确定链表的地址。头结点的作用:方便于处理开始结点的 *** 作和处理其它结点的 *** 作保持一致,也方便于处理空表的 *** 作和处理非空表的 *** 作保持一致。22有哪些链表可由一个尾指针来唯一确定?即从尾指针出发能访问链表上任何一个结点。单循环链表,双链表,双循环链表★23设线性表存放在向量A[arrsize]的前elenum个分量中,且递增有序。试写一算法,将x插入到线性表的适当位置上,以保持线性表的有序性。并且分析算法的时间复杂度。#definearrsize100intInsertOrder(intA[],intelenum,intx){inti=elenum-1;if(elenum==arrsize)//在顺序表上进行插入 *** 作必须先判满{printf(“full”);return0;}while(i>=0&&A[i]>x){A[i+1]=A[i];i--;}//从后往前进行比较,比较的同时完成移动A[i+1]=x;elenum++;returnelenum;//返回变化之后的表长}//本题也可以先进行比较,比较的结果就是找到了插入的合适位置,然后再完成插入 *** 作。但这样做比较耗时。假设n=elenum,则时间复杂度:最坏O(n),最好O(1),平均O(n)★24用向量作存储结构,试设计一个算法,仅用一个辅助结点,实现将线性表中的结点循环右移k位的运算,并且分析算法的时间复杂度。voidMoveKList(inta[],intn,intk){inti,j,temp;for(i=1;i=0;j--)a[j+1]=a[j];//内层for循环完成一次整体右移一位a[0]=temp;//把原来的表尾元素移至表头}}时间复杂度T(n)=kn=O(n)★25已知带头结点的动态单链表L中的结点是按整数值递增排列的,试写一算法将值为x的结点插入表L中,使L仍然有序。typedefintdatatype;typedefstructnode{datatypedata;structnodenext;}linklist;//linklist结构体类型描述voidInsertListOrder(linklistL,datetypex){linklistp=L;//对寻位指针p初始化linklists=(linklist)malloc(sizeof(linklist));//使用强制类型转换将新结点的地址赋给指针ss->data=x;while((p->next)&&(p->next->datanext;//后移寻位指针s->next=p->next;p->next=s;}//本题也可以采用两个寻位指针p和q,让q始终跟随p的后移而后移。★26设计一算法,逆置带头结点的动态单链表L。typedefintdatatype;typedefstructnode{datatypedata;structnodenext;}linklist;voidReverse(linklistL){linklistp,q;p=L->next;q=L->next;L->next=NULL;while(q){q=q->next;p->next=L->next;L->next=p;p=q;}}//用指针q遍历结点,指针p跟随指针q,使用头插法把当前结点p插入到修改之后的单链表中。27试编写在带头结点的动态单链表和静态单链表上实现线性表 *** 作Length(L)的算法,并将长度写入头结点的数据域中。★(1)typedefintdatatype;typedefstructnode{datatypedata;structnodenext;}linklist;voidLength1(linklistL){linklistp=L-next;inti=0;while(p){i++;p=p->next;}L->data=i;//按照题目要求,将表长写入头结点的数据域中。}(2)#definemaxsize1024typedefintdatatype;typedefstruct{datatypedata;intnext;}node;nodenodepool[maxsize];voidLength2(intL){inti=0,p=nodepool[L]next;while(p){i++;p=nodepool[p]next;}nodepool[L]data=i;}28假设有两个按元素值递增有序排列的线性表A和B,均以单链表①作存储结构,试编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序,允许值相同)排列的线性表C,并要求利用原表(即A表和B表)的结点空间存放表C。①今后若不特别指明,链表均是指动态链表,且可以带头结点。typedefintdatatype;typedefstructnode{datatypedata;structnodenext;}linklist;linklistConnect(linklistA,linklistB){linklistC,p,q,r;C=A;//C为最后返回的链表头指针p=A->next;//p总是指向链表A中当前正在比较的结点q=B->next;//q总是指向链表B中当前正在比较的结点C->next=NULL;//置空链表Cwhile(p&&q)//当链表A和链表B中还有没比较的结点时{if(p->datadata){r=p;p=p->next;}else{r=q;q=q->next;}//r总是指向p和q二者中数据较小的结点r->next=C->next;C->next=r;//将r按照头插法插入到链表C中}if(!p)//如果链表A中所有结点都链接到链表C中后,链表B中还有结点,while(q)//将链表B中剩余的未比较过的结点全部按照头插法插入到链表C中{r=q;q=q->next;r->next=C->next;C->next=r;}else//如果链表B中所有结点都链接到链表C中后,链表A中还有结点,while(p)//将链表A中剩余的未比较过的结点全部按照头插法插入到链表C中{r=p;p=p->next;r->next=C->next;C->next=r;}free(B);//释放链表B的头结点returnC;}29假设在长度大于1的单循环链表中,既无头结点也无头指针。s为指向链表中某个结点的指针,试编写算法删除结点s的直接前趋结点。typedefintdatatype;typedefstructnode{datatypedata;structnodenext;}linklist;voidDeleteBefore(linklists){linklistp=s;while(p->next->next!=s)p=p->next;free(p->next);p->next=s;}210已知,由单链表表示的线性表中,含有三类字符的数据元素(如:字母字符、数字字符和其它字符),试编写算法构造三个以循环链表表示的线性表,使每个表中只含同一类的字符,且利用原表中的结点空间作为这三个表的结点空间,头结点可另辟空间。typedefchardatatype;typedefstructnode{datatypedata;structnodenext;}linklist;//L为等待分解的单链表,最后得到的包含字母字符的链表的首地址作为该函数的返回值被返回,得到的包含数字字符的链表的首地址被参数LB带回,得到的包含其它字符的链表的首地址被参数LC带回。linklistDecompose(linklistL,linklistLB,linklistLC){linklistA,B,C,pa,pb,pc,p;//A,B,C分别用于保存分解之后得到的三个循环链表的首地址//pa,pb,pc分别指向三个循环链表当前的尾结点//p总是指向原单链表L中当前正在判断类型,正在等待处理的结点A=L;B=(linklist)malloc(sizeof(linklist));C=(linklist)malloc(sizeof(linklist));pa=A;pb=B;pc=C;p=A->next;while(p)//只要p不为空,就意味着原单链表L中仍然有未处理的结点{if(((’a’data)&&(p->datadata)&&(p->datanext=p;pa=p;p=p->next;}//将p链接到链表A的终端,然后p后移elseif((’0’data)&&(p->datanext=p;pb=p;p=p->next;}//将p链接到链表B的终端,然后p后移else{pc->next=p;pc=p;p=p->next;}//将p链接到链表C的终端,然后p后移}pa->next=A;pb->next=B;pc->next=C;//让链表A、B、C都循环起来LB=B;//通过指针类型的变量LB带回循环链表B的首地址LC=C;//通过指针类型的变量LC带回循环链表C的首地址returnA;//通过函数返回值带回循环链表A的首地址}211设有一个双链表,每个结点中除有prior、data和next三个域外,还有一个访问频度域freq,在链表被起用之前,其值均初始化为零。每当在链表进行一次Locate(L,x)运算时,令元素值为x的结点中freq域的值增1,并使此链表中结点保持按访问频度递减的顺序排列,以便使频繁访问的结点总是靠近表头。试编写实现符合上述要求的Locate运算的算法。typedefchardatatype;typedefstructnode{datatypedata;structnodeprior,next;intfreq;}dlinklist;//创建符合题意的结点类型dlinklistLocate(dlinklistL,datatypex){dlinklistp=L->next;//指针p用于查找第一个data域等于x的结点dlinklistq;while(p&&(p->data!=x))p=p->next;if(!p)returnNULL;//p为空,意味着没有找到data域等于x的结点else{p->freq++;//将找到的data域等于x的结点的访问频度值加1q=p->prior;//指针q用于查找在p的前面结点中第一个freq域不小于当前p所指结点的freq域的结点while((q!=L)&&(q->freq)freq))q=q->prior;if(q!=p->prior)//如果q发生了前移,才有必要移动p{p->prior->next=p->next;if(p-next)p->next->prior=p->prior;//如果p不是终端结点,才有必要修改p的后继结点的prior域p->prior=q;p->next=q->next;q->next=p;p->next->prior=p;//将p插入到q的后边}returnp;}}

这个是纯逻辑的编程,可以用plc的仿真软件,可以用

三菱仿真软件GX-Simulator和GX-Developer 两个是安装在一起的一起用的,用GX-Developer 编写程序 ,用 GX-Simulator仿真 。可以看到 X Y的闭合情况,完全可以模拟你的程序 ,搜索这个软件下载试试 ,呵呵 祝你进步 。

以上就是关于设计一个类属集合类SET,集合中可以存放不同类型的对象;然后编写一个演示程序利用SET创建并使用整全部的内容,包括:设计一个类属集合类SET,集合中可以存放不同类型的对象;然后编写一个演示程序利用SET创建并使用整、编写程序,演示列表框控件的基本 *** 作。在窗体上建立两个列表框,两个、我想用STC12C5A60S单片机控制STI6608驱动步进电机动作,请问C程序怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9878684.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存