#include <iostream>
using namespace std;
//single link
struct slink_t{
struct slink_t* next;
int data;
slink_t(): next(0), data(0){
}
slink_t(slink_t* p, int d): next(p), data(d){
}
};
/*output data of single link */
ostream& operator<< (ostream& os, const struct slink_t* p)
{
cout << "Output : ";
while (p && cout << p->data << ' ')
p = p->next;
return os;
}
/* reverse the single link */
struct slink_t* slink_reverse(struct slink_t* p)
{
struct slink_t* t = NULL, *tp = NULL;
while (p)
{
tp = t;
t = p;
p = p->next;
t->next = tp;
}
return t;
}
//double link
struct dlink_t{
struct dlink_t* next;
struct dlink_t* prev;
int data;
dlink_t(): next(0), prev(0), data(0){
}
dlink_t(dlink_t* n, dlink_t* p, int d): next(n), prev(p), data(d){
}
};
/* output data of double link */
ostream& operator<< (ostream& os, const struct dlink_t* p)
{
cout << "Output : ";
while (p && cout << p->data << ' ')
p = p->next;
return os;
}
/* reverse the double link */
struct dlink_t* dlink_reverse(struct dlink_t* p)
{
struct dlink_t* t = NULL;
while (p)
{
t = p;
p = p->next;
t->next = t->prev;
t->prev = p;
}
return t;
}
#define TEST__
#ifdef TEST__
/* test */
int main()
{
struct slink_t* sl = new slink_t(new slink_t(new slink_t(new slink_t(new slink_t(new slink_t(NULL, 6), 5), 4), 3), 2), 1);
cout << sl << endl;
sl = slink_reverse(sl);
cout << sl << endl;
struct dlink_t* dl = NULL;
struct dlink_t* h = new dlink_t(NULL, dl, 1);
dl = h;
for (int i = 2; i < 10; i++)
{
struct dlink_t* t = new dlink_t(NULL, dl, i);
dl->next = t;
dl = t;
// dl->prev->next = dl;
}
cout << h << endl;
h = dlink_reverse(h);
cout << h << endl;
cout << "Hello world" << endl;
return 0;
}
#endif
关键词标签:单链表,双链表
相关阅读
热门文章 安装红帽子RedHat Linux9.0操作系统教程使用screen管理你的远程会话GNU/Linux安装vmware如何登录linux vps图形界面 Linux远程桌面连
人气排行 Linux下获取CPUID、硬盘序列号与MAC地址linux tc实现ip流量限制dmidecode命令查看内存型号linux下解压rar文件安装红帽子RedHat Linux9.0操作系统教程Ubuntu linux 关机、重启、注销 命令lcx.exe、nc.exe、sc.exe入侵中的使用方法查看linux服务器硬盘IO读写负载
查看所有0条评论>>