以单链表为存储结构,写一实现线性表就地逆置的算法(用C++写)

作者&投稿:市琳 (若有异议请与网页底部的电邮联系)
写一个可运行的c++算法,逆置单链表,要求生成一个新的单链表,不是就地逆置!~

头插法建链表就可以啦,原来链表的第一个元素处于链表的最尾部,你可以百度一下

struct Node{
Node* prior;
int data;
Node* next;
};

Node *list = new Node;
list->prior=NULL;
list->next =NULL;
list->data=0;

//初始化过程,你可以自己创建列表的剩余节点
......
//逆置过程
Node * header = list->next;
list->next = NULL;
while(header->next != NULL)
{
//针对单个节点的逆置过程
Node* temp;
temp = header->prior;
header->prior=list->next;
header->next =temp;
}
header->prior = NULL;
}

用头插入法来做,直到输入0时,按enter键结束。

#include <iostream>
using namespace std;
typedef struct lnode
{
int data;
struct lnode *next;
}Lnode,*Linklist;
Linklist Creat_linklist()
{
Linklist L=NULL;
Lnode *s;
int x;
cin>>x;
while(x!=0)
{
s=new Lnode;
s->data=x;
s->next=L;
L=s;
cin>>x;
}
return L;

}
int main()
{

cout<<"请输入数据:"<<endl;
Linklist p;
p=Creat_linklist();

while(p!=NULL)
{
cout<<p->data<<' ';
p=p->next;
}

return 0;
}

用单链表作为存储结构写一实现就地逆置的算法
答:head=creat(5);//创建一个5个节点的链表 printf("原链表:\n");display(head);reverse(head);printf("置换后链表:\n");display(head);} 运行结果:14 5 6 20 7 原链表:14 5 6 20 7 置换后链表:7 20 6 5 14 Press any key to continue ...

以单链表为存储结构,写一算法,删除该链表中其值为x的结点,并将它插入到...
答:int remodenode(List *head,datatype x) {List *q,*p = head;while(p->next) {if(p->next->data == x) {q = p->next;p->next = q->next;q->next = head->next;//移到链表的首结点位置head->next = q;return 1;//成功完成操作,返回}p = p->next;}return 0;//没有完...

试写一算法在带头结点的单链表结构上实现线性表操作Length(L)。下面各...
答:intListLength_L(LinkList &L){int i=0;//i存储链表长度,初始为0LinkList p=L;//p为链表的指针,初始为头指针,指向头结点if(p) p=p-next;//如果p指向的头结点不为空,p指向带数据的第一个结点while(p){//如果p非空,i长度加1,且指向下一个结点p=p->next;i++;} return i;//...

以单链表为存储结构实现直接插入排序的算法,求程序?
答:}node;node *initiatesl(node *h) /*初始化链表*/ { h->next=NULL;return(h);} int pread(){ int x;scanf_s("%d",&x);return(x);} void createsl(node *h) /*创建单链表*/ { node *p,*s;int x;p=h;x=pread();while(x!=-1){ s=(node*)malloc(sizeof(node));...

...并以单链表作存储结构。试编写一个高效算法,删除表中所有大_百度知...
答://定义链表节点结构 struct Node { public:Node():_val(0),_next(NULL){ } Node(int val):_val(val),_next(NULL){ } Node(int val,Node* next):_val(val),_next(next){ } ~Node(){ if (_next)delete _next;} public:int _val;Node* _next;};typedef Node* LinkNode;//创建...

求解一道编程题:用单链表作存储结构,编写一个实现线性表中元素逆置的...
答:struct node *next;}sqlist;void disp1(sqlist *lq){ sqlist *t=lq;while(t!=NULL){printf("%d ",t->data); t=t->next; } } void disp2(sqlist *lq){ sqlist *t=lq;while(t->next!=NULL){printf("%d ",t->data); t=t->next; } } void main(){ sqlist *lq,*q,*...

数据结构(C语言)用单链表存储一元多项式,并实现两个多项式的相加运算...
答:/*正位序(插在表尾)输入n个元素的值,建立带表头结构的单链线性表*/ /*指数系数一对一对输入*/ void CreatePolyn(PolynList &L,int n){ int i;下载 原文档已转码为如下格式,以便移动设备查看 数据结构(c语言)用单链表存储一元多项式,并实现两个多项式的相加运算【最新】阅读:1037次 页数:36...

以单链表为存储结构,写一实现线性表就地逆置的算法(用C++写)
答:用头插入法来做,直到输入0时,按enter键结束。include <iostream> using namespace std;typedef struct lnode { int data;struct lnode *next;}Lnode,*Linklist;Linklist Creat_linklist(){ Linklist L=NULL;Lnode *s;int x;cin>>x;while(x!=0){ s=new Lnode;s->data=x;s->next=L...

设待排序的记录序列用单链表做存储结构,试写出插入排序算法。。。_百...
答:struct node *next;}node;void main(){ node *create(){ node *head,*p,*q;q = head;int i=0;int x;head=(node *)malloc(sizeof(node));while(1){ printf("please input the node:");scanf("%d",&x);if(x==0) {break;} p=(node *)malloc(sizeof(node));p->data=x;if...

用C语言编写链式存储结构下实现线性表的创建,插入,删除,按值查找
答:int data;//链表数据 struct LNode* next;//链表指针 }LNode,*LinkList;/*头插法-建立单链表*/ LinkList HeadCreate(LinkList la){ int num;la=(LinkList)malloc(sizeof(LNode));//建立头结点 la->next=NULL;scanf("%d",&num);while(num!=10){ LNode *p=(LinkList)malloc(sizeof(...