您的位置:首页 > 其它

创建一个简单的单向链表并将其倒序输出

2013-09-27 09:23 127 查看
#include <iostream>

#include <stdlib.h>

using namespace std;

typedef struct link

{
int data;
struct link *next;

}LINK;

//这里要用二级指针,才能返回改变后的值,要谨记。

//返回一级指针时,并没有改变该地址值,只是改变了该地址里的内容。

void init_link(LINK **qlink)

{
*qlink = (LINK*)malloc(sizeof(LINK));
(*qlink)->data;
(*qlink)->next = NULL;

}

void insert(LINK *qlink, int i, int data)

{
int pos=1;
LINK *s,*q,*p;
q = qlink;
s = (LINK*)malloc(sizeof(LINK));
s->data = data;
while(pos <= i)
{
//找到要插入的位置
p = q;
q = q->next;
pos++;
}
s->next = p->next;
p->next =s;

}

void display(LINK *qlink)

{
LINK *p;
p = qlink->next;
while(p)
{
cout<<p->data<<"-->";
p = p->next;
}

}

void reverse(LINK *qlink)

{

LINK *p,*q;

//指向第一个结点,不是头结点

p = qlink->next;

//断开头结点与链表

qlink->next = NULL;
while(p)
{
q = p;
p = p->next;
q->next = qlink->next;
qlink->next = q;
}

}

void destroy(LINK *plink)

{
free(plink);

}

int main(void)

{
LINK *qlink;
//初始化链表
init_link(&qlink);
//往链表新增结点
insert(qlink, 1, 4);
insert(qlink, 2, 3);
insert(qlink, 3, 6);
insert(qlink, 4, 2);
//显示链表
display(qlink);
//将链表逆置
reverse(qlink);
cout<<endl;
display(qlink);
//释放内存空间
destroy(qlink);
return 0;

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