俺刚刚接触数据结构有些简单的问题还请大家多多帮忙!(50分)

  • 主题发起人 主题发起人 痴心绝对
  • 开始时间 开始时间

痴心绝对

Unregistered / Unconfirmed
GUEST, unregistred user!
试写一算法 实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1,a2,...an)逆置为(an,an-1,....a1).
如果不开辟一新的空间如何把其内的元素倒置?[:D]
 
若线性表是用链式结构(如链表)描述的,则可以采用以下算法:
LinkNode *p,*q,*r;
p = head;
q = p->next;
while(q!=null){//无后续结点时终止
r = q->next;
q->next = p;
p = q;
q = r;
}
head->next = null;
head = p;
若线性表是用线性结构(如数组)描述的,则可以采用以下算法:
DataType var;
int i=0,j=0;
while(Array[j++]!='/0');//得到数组长度
for( i=0;i<=j;i++,j--){//交换下标i和j所处位置的值
var = Array;
Array = Array[j];
Array[j] = var;
}
 
嗨 你好 不过当设一变量时 不就相当于多了一个存储这一变量的空间吗[:D][red][/red]
 
头尾对应调换(比如:第一个和最后一个换、第二个和倒数第二个换。。。。。)
 
一个变量也不能设?这有点变态了啊
那用这个方法,对于线性存储结构:
for(i=0;i<=j;i++,j--){
Array = Array + Array[j];
Array[j] = Array - Array[j];
Array = Array - Array[j];
}
 
虽然不太懂 我再考虑考虑把 谢谢了 [:D]
 
后退
顶部