顺序存储结构:
连续输入,以*结束
#include<iostream>
#include<cstdlib>
//顺序表结构类型定义
typedef char datatype;
const int maxsize=10;
typedef struct
{ datatype data[maxsize];
int last;
}SqList,*Ptr;
void create(Ptr&);
void print(Ptr);
void invert(Ptr);
int main()
{
Ptr L=NULL;
//为什么要声明指针,不直接申明变量?
//——这里要直接使用变量也可以,但是在后面
//初始化顺序表就要取地址——还是指针(其实用引用传递也可以)
//所以一般就直接声明指针会更方便。
create(L);//建立顺序表
print(L);//输出顺序表
invert(L);//调用顺序表逆值的函数
print(L);//输出顺序表
return 0;
}
//建立顺序表
void create(Ptr&L)
{
//注意 :初始化时候一定要将指针引用传递;
//因为传值调用会再创建一个指针(b),和实参的值(a)相同,都是NULL,
//b指向了一块开辟的空间,出了函数后,回到主函数,这块堆中的空间虽然不会像栈中一样被回收,
//但是栈中的b已经不在了,a还是指向NULL,找不到这块空间
L=(SqList*)malloc(sizeof(SqList));
L->last=0;
char ch;
while((ch=getchar())!='*')
{
L->last++;
L->data[L->last]=ch;
}
}
//输出顺序表
void print(Ptr L)
{
for(int i=1;i<=L->last;i++)
printf("%2c",L->data[i]);
printf("\n");
}
//顺序表逆置
void invert(Ptr L)
{
int n=L->last/2;
for(int i=1;i<=n;i++)
{
char temp=L->data[i];
L->data[i]=L->data[L->last-i+1];
L->data[L->last-i+1]=temp;
}
}
链式存储结构:
使用原来的存储空间
#include <stdio.h>
#include <stdlib.h>
typedef int ElementType;
typedef struct Node *PtrToNode;
struct Node{
ElementType Data;
PtrToNode Next;
};
typedef PtrToNode List;
List Read();
void Print(List L);
List Reverse(List L);
int main() {
List L1,L2;
L1=Read();
Print(L1);
L2=Reverse(L1);
Print(L2);
return 0;
}
List Read(){
List current,head=NULL,prev=NULL;
int len=0;
printf("Please input the length of chain:");
scanf("%d",&len);
if(len==0) return NULL;
printf("Please input the figures:");
while(len--){
current=(List)malloc(sizeof(struct Node));
scanf("%d",¤t->Data);
current->Next=NULL;
if(head==NULL){
head=current;
prev=head;
}
else{
prev->Next=current;
prev=current;
}
}
return head;
}
void Print(List L){
while(L){
printf("%d",L->Data);
L=L->Next;
}
}
List Reverse(List L){
if(L==NULL)
return NULL;
List p=NULL,q=NULL;
while(L){
q=L->Next;//p是旧链的第二个
L->Next=p;//断开旧链,链上新链
p=L;//新链的第一个是刚加入的旧链
L=q;//旧链的头更新
}
return p;
}
本文详细探讨了数据结构中线性表的逆转过程,分别针对顺序存储结构和链式存储结构进行了分析。在顺序存储结构中,通过连续输入并以特定标记*结束的方式进行逆转;而在链式存储结构中,则利用原来的存储空间实现逆转操作。
1441

被折叠的 条评论
为什么被折叠?



