// 实现顺序表的就地逆转 不占用额外的存储空间 我的思想是全部入栈 然后逐个连接在链表后
typedef struct Stack{
TElemType data;
struct Stack *next;
}Stack,*LinkStack;
void reverse(LinkList &L){
Stack s;
p=L->next;
while(p){
Push(S,p);
}
while(s.getTop!=null){
Pop(S,*p);
q=L->next;
p->next=null;
q->next=p;//弹出栈顶元素
q=p; //q向后走一个 }
}
//教材答案 思路是从首元结点开始头插法 逐个插入在头结点后,这样原来的第一个结点就成了最后一个。
void inverse(LinkList &L){
p=L->next;
L->next=null;
while(p){
q=p->next;//q指向p的后继
p->next=L->next;
L->next=p;//p结点头插法插入到头结点之后
p=q;
}
}
【数据结构】将顺序表原地逆转,不占用额外的存储空间
最新推荐文章于 2024-07-25 11:43:17 发布