造价通

反馈
取消

热门搜词

造价通

取消 发送 反馈意见

单链表逆置详细设计

2018/06/19102 作者:佚名
导读: #include<iostream>using namespace std;struct Number //链表的类型{char data; //链表当前结点的值struct Number *next; //链表当前结点指向下一结点的指针}*number;void CreateList(Number *&L) //创建链表{Number *s,*r; //定义两个链表类型

#include<iostream>

using namespace std;

struct Number //链表的类型

{

char data; //链表当前结点的值

struct Number *next; //链表当前结点指向下一结点的指针

}*number;

void CreateList(Number *&L) //创建链表

{

Number *s,*r; //定义两个链表类型的临时指针

char x; //定义一个临时字符变量

L=(Number *)malloc(sizeof(Number)); //为头结点开辟空间

L->next=NULL; //此时头结点的后继指针和前驱指针赋值为空

r=L; //是r指针指向头结点

x=getchar(); //用x接受一个从键盘输入的字符

while(x!='\n') //控制当输入回车键时结束

{

s=(Number *)malloc(sizeof(Number)); //开辟下一结点的空间

s->data=x;

r->next=s; //r的后继指针指向s

r=s; //是s指向r

x=getchar(); //用x接受一个从键盘输入的字符

}

r->next=NULL; //当创建结束时,r的后继指针为空

}

void PrintList(Number *L) //输出链表

{

Number *p=L->next; //定义一个临时指针并指向链表的第一个结点

while(p!=NULL) //判断结点是否为空,空就结束

{

cout<<p->data; //输出结点的值

p=p->next; //指向下一个结点

}

cout<<endl; //换行

}

void InverseList(Number *L) //链表的逆置

{

Number *p=L->next,*q=L->next;

q=q->next;

p->next=NULL;

p=q;

while(p!=NULL)

{

q=q->next;

p->next=L->next;

L->next=p;

p=q;

}

}

void DestroyList(Number *&L) //销毁链表

{

Number *p=L,*q=p->next;

while(q!=NULL)

{

free(p); //释放p的空间

p=q;

q=p->next;

}

cout<<"释放链表"<<endl;

}

int main()

{

cout<<"请输入一个链表:";

CreateList(number); //调用创建链表

cout<<"********************************************************************************";

cout<<"输入的链表为:"<<endl;

PrintList(number); //调用输出链表

InverseList(number); //调用逆置链表

cout<<"此链表的逆置为:"<<endl;

PrintList(number); //调用输出链表

cout<<"********************************************************************************";

DestroyList(number); //调用销毁链表的函数

return 0;

}

*文章为作者独立观点,不代表造价通立场,除来源是“造价通”外。
关注微信公众号造价通(zjtcn_Largedata),获取建设行业第一手资讯

热门推荐

相关阅读