版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CSDN___CSDN/article/details/84592678
即:将一个已经创建好的单链表进行指针域的改变
今天突然被问到单链表逆序的问题,弄了好久才看出别人的程序有啥问题,就重新写了一遍。
今天才在CSDN客户端上看到美团的面试题是冒泡排序。
一个看似简单的问题难倒很多人,所以简单的不要因为他简单就忽视它,人们在简单的问题上越容易犯错!!!!
#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int data;
struct node *next;
}N;
N *p,*h,*q;
void creat ()
{
int x;
scanf("%d",&x);
while(x!=-1)
{
p=(N*)malloc(sizeof(N));
p->data=x;
if(h==NULL)
{
h=p;
q=p;
}
else
{
q->next=p;
q=p;
}
p->next=NULL;
scanf("%d",&x);
}
}
void print()
{
p=h;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
return ;
}
void nixu ()
{
N *n;
q=h->next;
n=NULL;
h->next=n;
while(q)
{
n=h;
h=q;
q=q->next;
h->next=n;
}
return ;
}
void xiaohui()
{
while(h)
{
p=h;
h=h->next;
free(p);
}
return ;
}
int main ()
{
int a;
while(1)
{
h=NULL;
creat();
print();
nixu();
print();
xiaohui();
printf("是否退出该程序?(1 or 0)");
scanf("%d",&a);
if(a!=1)
exit(0);
}
return 0;
}