首页 > 分享 > 设有一个线性表E = { e1, e2, … , en

设有一个线性表E = { e1, e2, … , en

最新推荐文章于 2023-12-17 21:43:04 发布

小白启程 于 2020-03-22 18:12:47 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

设有一个线性表E = { e1, e2, … , en - 1, en },设计一个算法,将线性表逆置,即使元素排列次序颠倒过来,成为逆线性表E’={ en , en-1 , … , e2 , e1 },要求逆线性表占用原线性表空间,并且用顺序表和单链表两种方法表示,分别用两个程序来完成。

将链表倒置就是把原本指向右的链表方向反过来,让这个链表指向方向变成左,这样就可以不用移动链表的内存位置,就实现了链表的倒置。

顺序表就很简单了,互换就行了。

在这里插入图片描述

这是链表的:

#include<stdio.h> #include<stdio.h> typedef struct node {char data;struct node *next; }* linklist; linklist creat(); void print(linklist head); void Reversal(linklist head); #include <stdio.h> #include <stdlib.h> int main() {linklist head=NULL;head=creat();printf("您输入的字符串是:");print(head);Reversal(head);puts("逆置后的字符串是:");print(head);return 0; } linklist creat() {char ch;linklist pNew,pEnd=NULL ;linklist a = NULL;a = (linklist)malloc(sizeof(linklist));pEnd = a;puts("请输入字符串(输入“*”结束):");while ((ch = getchar()) != '*'){pNew = (linklist)malloc(sizeof(linklist)); //采用尾插法pNew->data = ch;pEnd->next = pNew;pEnd = pNew;}pEnd->next = NULL;return a; } void print(linklist head) {head = head->next;while (head->next != NULL){printf("%c ", head->data);head = head->next;}printf("%cn", head->data); } //void Reversal(linklist head) //{ //linklist p, q, r; //p = head->next; //q = p->next; //while (q != NULL) //{ //r = q->next; //q->next = p; //p = q; //q = r; //} //head->next->next = NULL; //head->next = p; //} //单链表逆置 //两种都可以 void Reversal(linklist head) {linklist p, q;p = head->next;head->next = NULL;while (p){q = p;p = p->next;q->next = head->next;head->next = q;} }

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990'

这是顺序表的:

#include "stdio.h" #include "stdlib.h" typedef struct student {char *data;int m; }*plink; plink CreateLista(int x); void printfplink(plink Lb); plink Reversal(plink Lb); int main() {plink La=NULL;int x;printf("请输入你字符串字符个数:");scanf_s("%d", &x);La=CreateLista(x);printfplink(La);La = Reversal(La);printfplink(La);return 0; } plink CreateLista(int x) {char ch, i;plink L;L = (plink)malloc(sizeof(plink));L->m = x;L->data = (char *)malloc((x * sizeof(char)));printf("请输入一字符串(输入%d个结束):n",x);getchar(); //清除上次回车键for (i = 0; i < x; i++) {ch = getchar();L->data[i] = ch;}return L; } void printfplink(plink Lb) {for (int i = 0; i < Lb->m; i++)printf("%c ", Lb->data[i]);printf("n"); } plink Reversal(plink Lb) {int x = Lb->m - 1;char t;for (int i = 0; i < (Lb->m)/2; i++,x--){t = Lb->data[i];Lb->data[i]= Lb->data[x];Lb->data[x] = t;}return Lb; }

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859'

相关知识

英语翻译设图G有n个结点,以下算法产生的是最小生成树:a) 选取最小权边e1,置边数i=1,b) i=n
平面上有两个向量e1=(1,0),e2=(0,1),令有动点P从P0(
去冰箱避暑能避几时?自动降温装置才是真天堂!
【防水 DS18B20 温度传感器套件】 DIY :鱼缸自动降温装置 DF创客社区
【题文】在某国,新冠肺炎疫情持续,民众抑郁、焦躁等
E=MC~2
excel中在文本框中输入 =$A5=$E$2 是什么意思
EMC测试EN 61326-1_欧盟NB机构授权实验室
一种宠物荷兰猪饲料.pdf
2022卡塔尔世界杯比赛时间表 2022卡塔尔世界杯奖金方案出炉了

网址: 设有一个线性表E = { e1, e2, … , en https://m.mcbbbk.com/newsview759408.html

所属分类:萌宠日常
上一篇: Python 函数 int(x,
下一篇: c#中字符串比较,==,!=,C