❶ 数据结构与算法分析练习
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<stack>
usingnamespacestd;
structnode{
inte;
structnode*next;
};
/**
*初始化link
*head为根节点,不保存数据
*/
structnode*initLink(structnode*link){
link=(structnode*)malloc(sizeof(structnode));
link->next=NULL;
structnode*q=link;
intn=0;
while(n!=-1){//终止条件自行修改,比方说,建立n个节点
cin>>n;
if(n>0){
structnode*t=(structnode*)malloc(sizeof(structnode));
t->e=n;
t->next=NULL;
q->next=t;
q=t;
}
}
returnlink;
}
/**逆置(头插法)
*另有,递归法。递归法耗用资源多,头插法比较好。
*#成功逆置返回1,否则返回0(不会有0的情况发生)
*/
intReverseList(structnode*head){
structnode*p=head->next,*q;
head->next=NULL;
while(p){
q=p;
p=p->next;
q->next=head->next;
head->next=q;
}
return1;
}
/**
*#打印出转换的N进制数(N<9),成功返回1,否则返回0
*/
intten_to_N(intx,intN){
intr=-1;
if(x>0){
r=x%N;
ten_to_N(x/N,N);
}
if(r>=0)
printf("%d",r);
return1;
}
structqueue{
stack<int>s1,s2;
};
/**
*#将x插入到队列q中,成功返回1,否则返回0
*/
intenqueue(structqueue*q,intx){
if(q->s1.size()>0)
q->s1.push(x);
else{
while(q->s2.size()>0){
q->s1.push(q->s2.top());
q->s2.pop();
}
q->s1.push(x);
}
return1;
}
/**
*#队列q执行出队操作,成功则返回出队的元素,否则返回0
*/
intdequeue(structqueue*q){
intt=0;
if(q->s2.size()>0){
q->s2.top();
q->s2.pop();
}else{
while(q->s1.size()>1){
q->s2.push(q->s1.top());
q->s1.pop();
}
if(q->s1.size()==1){
t=q->s1.top();
q->s1.pop();
}
}
returnt;
}
intmain()
{
structnode*head=NULL;
head=initLink(head);
if(ReverseList(head)==1){
structnode*p=head->next;
while(p){
printf("%d",p->e);
p=p->next;
}
printf(" ReverseListdone. ");
}
ten_to_N(10,4);
structnode*q;
while(head){
q=head->next;
free(head);
head=q;
}
}
❷ 求解,数据结构与算法
关键字序列是{19,13,33,02,16,24,7},计算过程如下:
插入关键字19,索引(哈希值)=19mod11=8,存入哈希表:
下标012345678910
关键字19
插入关键字13,索引(哈希值)=13mod11=2,存入哈希表:
下标012345678910
关键字1319
插入关键字33,索引(哈希值)=33mod11=0,存入哈希表:
下标012345678910
关键字331319
插入关键字02,索引(哈希值)=02mod11=2,有冲突,取新索引2+1=3,没有冲突,存入哈希表:
下标012345678910
关键字3313219
插入关键字16,索引(哈希值)=16mod11=5,存入哈希表:
下标012345678910
关键字331321619
插入关键字24,索引(哈希值)=24mod11=2,有冲突,取索引2+1=3,仍有冲突,
再取索引3+1=4,没有冲突,存入哈希表:
下标012345678910
关键字33132241619
插入关键字7,索引(哈希值)=7mod11=7,存入哈希表:
下标012345678910
关键字331322416719
这就是最后得到的哈希表.
//C语言测试程序
#include<stdio.h>
#include<stdlib.h>
#defineSUCCESS1
#defineUNSUCCESS0
#defineHASHSIZE11
#defineNULLKEY-1
typedefintStatus;
typedefstruct
{
int*elem;
intcount;
}HashTable;
intm=0;
StatusInitHashTable(HashTable*H)
{
inti;
m=HASHSIZE;
H->count=m;
H->elem=(int*)malloc(m*sizeof(int));
for(i=0;i<m;i++)
{
H->elem[i]=NULLKEY;
}
returnSUCCESS;
}
intHash(intkey)
{
returnkey%m;
}
voidInsertHash(HashTable*H,intkey)
{
intaddr;
intpos;
pos=Hash(key);
addr=pos;
while(H->elem[addr]!=NULLKEY)
{
////////
printf("索引=%d有冲突. ",addr);
////////
addr=(addr+1)%m;
if(addr==pos)
{
printf(" 散列表已满! ");
exit(1);
}
}
H->elem[addr]=key;
}
StatusSearchHash(HashTableH,intkey,int*addr)
{
*addr=Hash(key);
while(H.elem[*addr]!=key)
{
*addr=(*addr+1)%m;
if(H.elem[*addr]==NULLKEY||*addr==Hash(key))
{
returnUNSUCCESS;
}
}
returnSUCCESS;
}
voidshowHashTable(HashTable*H)
{
inti;
for(i=0;i<H->count;i++)
{
printf("%4d",i);
}
printf(" ");
for(i=0;i<H->count;i++)
{
if(H->elem[i]==NULLKEY)
{
printf("%4c",0x20);
}
else
{
printf("%4d",H->elem[i]);
}
}
printf(" ");
}
intmain()
{
intkey[]={19,13,33,02,16,24,7};
intlen;
inti;
HashTableH;
InitHashTable(&H);
len=sizeof(key)/sizeof(key[0]);
for(i=0;i<len;i++)
{
printf("插入%d,索引(Hash)=%d ",key[i],Hash(key[i]));
InsertHash(&H,key[i]);
showHashTable(&H);
}
return0;
}
❸ 991数据结构与算法与824数据结构与算法的区别
没有区别。
数据结构与算法和数据结构都是书的名字,他们的内容有一点点区别,区别就是内容分布上有一点不同,绝大部分都是一样的。
相同的部分都是数据结构。
数据结构常见的包括线性表(数组,链表),栈,队列,二叉树,平衡二叉树,各种树,图,基本上是这些内容。
❹ 哪本《数据结构与算法》最好
如果是想入门,推荐程杰的《大话数据结构》,没有太多的生搬硬套,语言幽默风趣,口语化的说教。很难想象在公交车或者地铁上读严蔚敏的数据结构,但是我的的确确在地铁上(半个小时),读完了程杰兄两章《大话》。
❺ 数据结构与算法
看题可知实际上就是要从表A中删除出现在表B和表C交集D里的元素
那么首先肯定是要先确定表B和表C和交集D,由于ABC都是递增线性表,所以可以确定B和表C和交集D的边界(可以不用从头到尾来遍历表B和表C,属于优化范畴),之后再遍历A表删除其在D中的元素,遍历时同样适用上面的边界处理
既然是要嵌套遍历三个表那么时间复杂度自然就是na*nb*nc
❻ 数据结构与算法之间的关系
数据结构:是一门研究程序设计中计算机操作的对象以及它们之间的关系和运算的一门学科。
研究是数据元素之间抽象化的相互关系和这种关系在计算机中的存贮表示,并对每种结构定义各自的运算,设计出相应的算法,而且经过运算后所得的新结构一般仍然是原来的结构类型。
算法:是执行特定计算的有穷过程。特点: 动态有穷,确定性,输入,输出,可行性。
呵呵!下面你自己想办法了,自己的事自己做,就这么多了啊
❼ 数据结构与算法分析
数据结构与算法分析(C++版第2版)/国外计算机科学教材系列
作者:着者:美Shaffer,C.A;译者:张铭等译 出版社:电子工业出版社