关于数据结构(C语言)的问题~!

试分别用顺序表和单链表作为存储结构,实现将线性表(a0,a1,...an-1)就地逆置的操作,所谓"就地"指辅助空间应为O(1)。
下面是我自己写的,刚刚学,很多地方是借鉴来的,希望懂的高手帮我分析下.谢谢了.

#include<stdio.h>
#include<stdlib.h>
typedef int Datatype;
typedef struct{
Datatype data[20];
int length;
}Seqlist;
void ReverseList( Seqlist *L)
{
Datatype t ;
int i;
for ( i=0 ; i < L->length/2 ; i++)
{ t = L->data[i];
L -> data[ i ] = L -> data[ L -> length - 1 - i ] ;
L -> data[ L -> length - 1 - i ] = t ;
}
}
void InitList(Seqlist *L)
{
L->length=0;
}
void main()
{
int i;
Seqlist *p=new Seqlist;
InitList(p);
for(i=0;i<10;i++)
p->data[i]=i;
ReverseList(p);
for(i=0;i<10;i++)
printf("%d ",p->data[i]);
}

Seqlist是一个结构体类型,含有一个整型数组和一个存储数组元素个数的length变量。函数InitList()的作用是使数组元素个数归零,然后你在主函数中给Seqlist的实例p赋值了。接下来ReverseList()的作用是让数组元素倒序,其实也就是把第一个和最后一个元素调换,第二个和倒数第二个元素调换……一直到第length/2个元素和倒数第length/2个元素调换。最后输出。

程序中的错误:
1.
Seqlist *p=new Seqlist;
这不是MFC!要这样写:
Seqlist *p=(Seqlist *)malloc(sizeof(Seqlist));

2.
p中的length变量未重新赋值,始终为0
在ReverseList(p); 前加上
p->length=i;
温馨提示:内容为网友见解,仅供参考
无其他回答

数据结构(C语言版),求高手解决。。
1.二叉树是度为2的有序树( )【答案】× 2.完全二叉树一定存在度为1的结点( )【答案】× 3.深度为K的二叉树中结点总数≤2k-1( )【答案】√ 4.由一棵二叉树的先序序列和后序序列可以惟一确定它( )【答案】× 5.完全二叉树中,若一个结点没有左孩子,则它必是树叶...

关于数据结构(C语言版)的两个问题
如果为右括号`)`,则检查`stack`是否为空,如果不为空则弹出栈顶元素,将`top`减一。在遍历结束后,检查`stack`是否为空。如果为空,表示所有括号均匹配,返回1;否则表示存在未匹配的括号,返回0。通过上述程序,可以实现对给定字符串中括号匹配性的判断,对于数据结构(C语言版)中的括号匹配问题,...

关于数据结构(C语言)的几个题
第一步将数据(假设为e)放入s的data中;第二步s的后继指向q的后继节点;第三步q的后继指向s 4.查找72只需2步:第一步:设立low、high与mid指针,将72与mid指向的值即48比较;第二部:72比48大,low指向mid+1,重新算出mid,指向72,再与72比较,即查找成功。最多比较次数参考严蔚敏《数据...

关于数据结构的问题,用C语言描述
1.栈、队列的定义及其相关数据结构的概念,包括:顺序栈,链栈,共享栈,循环队列,链队等。栈与队列存取数据(请注意包括:存和取两部分)的特点。2.递归算法。栈与递归的关系,以及借助栈将递归转向于非递归的经典算法:n!阶乘问题,fib数列问题,hanoi问题,背包问题,二叉树的递归和非递归遍历问题,图的深度遍历与栈的关系...

数据结构(c语言版)求助,我想了好久都没想出来?
内外层循环关系示意图 其中①是最外层循环,②是中间层循环,④是最内层循环,各语句的执行顺序是:先从最外层循环开始①、 ②、 ③各执行一次,到最内层④后,④连续执行(n+1)次,其内部语句⑤连续执行 n 次 ,然后返回至中间层 ②执行下一次,②每执行一次,③就执行一次,④连续执行(n+1)...

C语言数据结构问题
如果子表为空表,表明查找失败。折半查找又称为二分查找。例如:一个有序顺序表为(9,23,26,32,36,47,56,63,79,81),如果要查找56。利用以上折半查找的思想。其中low和high表示两个指针,分别指向待查找元素的下界和上界,指针mid指向low和high的中间位置,即mid=(low+high)\/2。将顺序...

c语言版 数据结构问题
1.找到结构的头(H)和尾(R)2.下面是伪代码 while(H在R之前) do begin if data_at[H]!=data_at[R] then return false;\/\/肯定不对称 H<-后继;R<-前驱;end;return true;时间复杂度O(strlen(s))既为表长

c语言数据结构问题求解
A[0][0]和A[2][2]相差了(2*n+2)个元素,与A[3][3]相差了(3*n+3)个元素,所以,676-644=32,32\/2*3=48,644+48=692,选择c项。满意请采纳呦~

C语言数据结构的一个基本问题
1 int read_2D_Array(int **array, int i, int j, int column)2 { \/\/i row j column ,总行数为column 3 return((*(int*)array + i*column + j));4 } 以上函数的参数第一行的int **array是函数参数这个参数说明该函数参数列表一接收的数据类型为int ** 型的变量 ...

C语言数据结构问题,我已经在线性表中插入了一个元素,为什么表的长度还是...
define MAXSIZE 10 typedef struct node { int data[MAXSIZE];int length;}SeqList;\/\/定义一个线性表 SeqList L;\/\/顺序表的初始化 void SeqListInit(SeqList *L){ L->length = 0;} \/\/求线性表的长度 int SqlListLength(SeqList L){ return L.length;} \/\/顺序表的前插操作 void Seq...

相似回答
大家正在搜