您的位置:首页 > 理论基础 > 数据结构算法

数据结构与算法(1)

2010-02-27 10:30 253 查看
准备换工作了,把一些内容复习一遍,有些东西很多年都不看的,面试的时候问道了真的不好怎么说,别人说你“这都是基础的东西,你这都不会?”弄的人很郁闷。

下面都是一些经典的算法

数组

1.输出自然数0-N以内的质数

static const int N = 1000;

int main()

{

int i, a
;

for(int i = 2; i < N; ++i)

{

a[i] = 1;

}

for(int i = 2; i < N; ++i)

{

if(a[i])

{

for(int j = i; j*i < N; ++j)

a[i*j] = 0;

}

}

for(int i = 2; i < N; ++i)

{

if(a[i])

cout<<" "<< i;

}

cout<<endl;

}

链表

template<class T>

struct Node

{

T mData;

Node *next;

Node(T data):mData(data),next(0){}

};

1.约瑟夫环,循环链表实现

void fun(int N, int M)

{

Node<int> *head = new Node<int>(1);

for(int i = 2; i <= N; ++i)

{

Node<int> *p = head;

while(p->next)

p = p->next;

Node<int> *temp = new Node<int>(i);

p->next = temp;

if(i == N)

temp->next = head;

}

while(head->next != head)

{

for(int i = 1; i < M-1; ++i)

head = head->next;

Node<int> *p = head->next;

head->next = head->next->next;

delete P;

}

cout<<head->mData<<endl;

delete head;

}

2.单向链表的逆转 2种方法实现

template<class T>

class SingleList

{

public:

SingleList();

~SingleList();

void pushback(T data);

void reverse();

void reverse(int);

private:

Node<T> *head;

};

template<class T>

SingleList<T>::SingleList()

:head(0)

{

}

template<class T>

SingleList<T>::~SingleList()

{

while(head->next)

{

Node<T> *p = head;

head = head->next;

delete p;

}

if(head)

{

delete head;

}

}

template<class T>

void SingleList<T>::pushback(T data)

{

if(!head)

{

head = new Node<T>(data);

}

else

{

Node<T> *p = head;

while(p->next)

p = p->next;

p->next = new Node<T>(data);

}

}

template<class T>

void SingleList<T>::reverse()

{

Node<T> *t, *r, *y;

r = 0;

y = head;

while(y)

{

t = y->next;

y->next = r;

r = y;

y = t;

}

head = r;

}

template<class T>

void SingleList<T>::reverse(int)

{

Node<T> *end = new Node<T>(head->mData);

while(head->next)

{

Node<T> *p = head;

head = head->next;

delete p;

Node<T> *temp = new Node<T>(head->mData);

temp->next = end;

end = temp;

}

head = end;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: