问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎样将线性表逆置

发布网友 发布时间:2023-07-26 04:27

我来回答

2个回答

热心网友 时间:2024-11-28 16:38

线性表逆置的方法如下:
线性表逆置一般通过程序来实现。通过下面的程序,可以将线性表向量a=(a1,a2,a3,…,an)逆置为a'=(an,an-1,…,a2,a1)。

#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#define maxsize 1000
typedef struct
{
int data[maxsize];
int last;
}ZgList;
typedef struct Node
{
int data;
struct Node *next;
}Node;

void CreateOrder(ZgList *L)
{
int n;
int i;
while(1)
{
cout<<"请输入顺序表长度:"<<endl;
cin>>n;
if(n>0)
{
break;
}
else
{
cout<<"Error:顺序表的长度必须大于零!"<<endl;
}
}
cout<<"请输入顺序表元素:"<<endl;
L->last=n-1;
for(i=0;i<n;i++)
{
cin>>L->data[i];
}
}

void PrintOrder(ZgList *L)
{
int i;
if(L->last==-1)
{
cout<<"当前顺序表为空。"<<endl;
}
else
{
cout<<"当前顺序表为:"<<endl;
for(i=0;i<=L->last;i++)
{
cout<<L->data[i]<<" ";
}
cout<<endl;
}
}

void ReverseOrder(ZgList *L)
{
int i;
int j;
for(i=0,j=L->last;i<j;i++,j--)
{
L->data[i]^=L->data[j]^=L->data[i]^=L->data[j];//值互换
}
cout<<"顺序表逆置成功!"<<endl;
}
void PrintChain(Node *H)
{
cout<<"当前单链表为:"<<endl;
Node *p;
p=H->next;
while(p!=NULL)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}

//尾插法建单链表
void CreateChain(Node *H)
{
Node *s;
Node *p;//动态指向表尾
p=H;
int n;
int i;
H->next=NULL;//初始化,以确保重复建表的无误!!!!!

//输入N,并判断N是否合法
while(true)
{
cout<<"请输入单链表长度:";
cin>>n;
if(n>0)
{
break;
}
else
{
cout<<"Error:单链表的长度必须大于零!"<<endl;
}
}
cout<<"请输入单链表:"<<endl;
for(i=0;i<n;i++)
{
s=(Node *)malloc(sizeof(Node));
cin>>s->data;
s->next=p->next;
p->next=s;
p=p->next;
}
cout<<"成功创建新单链表!"<<endl;
PrintChain(H);
}

//利用顺序遍历同时用头插法重建单链表
void ReverseChain(Node *H)
{
Node *h;
Node *p;
Node *temp;
h=(Node *)malloc(sizeof(Node));
h->next=NULL;//初始化
p=H->next;
while(p!=NULL)
{
temp=p->next;
p->next=h->next;
h->next=p;
p=temp;//p=p->next
}
H->next=h->next;//将新表的头指针赋给原头指针(实现逆序)
cout<<"单链表逆置成功!"<<endl;
}
void Choose(int choice,ZgList *L,Node *H)
{
switch(choice)
{
case 4:
CreateOrder(L);
break;
case 5:
PrintOrder(L);
break;
case 6:
ReverseOrder(L);
break;
case 1:
CreateChain(H);
break;
case 2:
PrintChain(H);
break;
case 3:
ReverseChain(H);
break;
default:
exit(0);
}
}
void Print(ZgList *L,Node *H)
{
int choice;
cout<<"1.建立新单链表"<<endl;
cout<<"2.打印当前单链表"<<endl;
cout<<"3.将单链表逆置"<<endl<<endl;
cout<<"4.建立新顺序表"<<endl;
cout<<"5.打印当前顺序表"<<endl;
cout<<"6.将顺序表逆置"<<endl<<endl;
cout<<"7.按其它任意键退出"<<endl;
cout<<"--------------------"<<endl;

cout<<"请选择你要的操作:";
cin>>choice;
Choose(choice,L,H);
}
int main(void)
{
ZgList L;
ZgList *p;
p=&L;
L.last=-1;//初始化
Node *H;
H=(Node *)malloc(sizeof(Node));
H->next=NULL;//初始化
Print(p,H);
while(true)
{
cout<<"按enter键继续...";
getchar();
getchar();
system("cls");
Print(p,H);
}
return 0;
}

线性表(亦作顺序表)是最基本、最简单、也是最常用的一种数据结构。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。线性表的逻辑结构简单,便于实现和操作。因此,线性表这种数据结构在实际应用中是广泛采用的一种数据结构。

热心网友 时间:2024-11-28 16:38

#define maxsize 1000
typedef struct sqlist{
char data[maxsize];
int n;
}Sqlist;
main()
{
int i,j,t;
Sqlist a;
for(i=0;i<=maxsize/2;i++)
{
t=a.data[i];
a.data[i]=a.data[maxsize-i-1];
a.data[maxsize-i-1]=t;
}
for(i=0;i<maxsize;i++)
printf("%d\t",a.data[i]);
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎么描写小猫呢? 什么梦预示正缘要出现 壳外电场分布为什么与壳内电荷的位置无关啊 为什么带电球壳的内部场强处处为零? 电荷内或外感应球壳,球壳内部场强是否处处为零 win11回收站图标隐藏方法-win11回收站怎么隐藏 Windows 11回收站不见了怎么办_如何在Windows 11中恢复回收站图标 Win11回收站图标显示方法 win11显示回收站的方法_win11怎么显示回收站 华为荣耀5X评价,缺点,参数 关于数据结构 问题:设计一个算法,将顺序表中的所有元素逆置。我自己写... 数据结构顺序表逆置问题 数据结构中有试写一算法,实现顺序表的就地逆置,即利用原表的存储空间... 数据结构中有试写一算法,实现顺序表的就地逆置 数据结构用不同储存结构实现线性表的就地逆置c语言解答 用数据结构(顺序表)实现一组数的倒置 五雷令牌用开光吗 哈工程就业最好的去向 安宝笛香水身体乳黄色是对应沐浴露绿色的味道吗 小米3怎么退出切换 东风天龙鼓风机正常工作但是出风口就是不出风,空调暖风都没风,这是... ...篇完形填空,要求每篇15个题目,根据八年级上册英语书中的1-3单元的... 患了乳腺增生有什么药物可以辅助治疗? 手术效果不知道怎么样?_百度... 乳腺增生吃的药有哪些 治疗乳腺增生的药都有哪些 工装或是公司、商场、办公室天花上大面积发光体叫什么灯怎么做的 你的朋友累了,,你邀请他喝饮料但他更喜欢茶,,编一段英文对话 日常生活中有哪些以亿为单位的数. 要6个,要日常生活中的. 我国以亿作单位的资源有哪些 数以亿计的数字单位有哪些? 求数据结构:将顺序表中的元素逆置,用非算法描述,并用C语言的形式写出... 在那时,我花空闲时间听音乐。英语翻译 中班社会活动紧急电话教案 蓝牙耳机听不到对方声音 但是可以听歌 对方也可以听到我的声音 三星ml3710nd怎么设置纸张大小 三星gt-s3710怎么输入#字*字等。。急用 跪求 三星GT-S3710按键灯怎么开 三星GT-S3710怎么发彩信啊?一直只能收不能发啊,一发就出现错误_百度知 ... 歌诗图能换多大的轮胎 歌诗图能装冠道19寸轮毂吗? 金普新区十三里钢材批发市场地址 2016款歌诗图轮毂是什么材质 6年的歌诗图本田 要换轮胎 换个什么好呢?性价比高一点的 大连金州十三里恒德汽车厂怎么样 本田广汽本田歌诗图2014款怎么样 辽宁省大石桥市到大连市金州区十三里开车怎么走 反恐行动忘记账号怎么办 金州十三里科达利精密怎么样 反恐行动怎么隐藏套装 反恐行动死证号安全不