|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
# include <stdio.h>
# include <stdlib.h>
typedef struct LNODElist
{
int data;
struct LNODElist *next;
}st;
void inverselist(st **);
void initlist(st **);
int main(void) //主函数
{
st *l;
initlist(&l);
inverselist(&l);
printf("%d", l ->next ->data);
return 0;
}
void initlist(st **b) //初始化链表
{
int i,j;
st *m,*a,*k;
k = (st*)malloc(sizeof(st*));
*b = &k;
k ->next = NULL;
a = k;
for(i = 0, j = 1; i < 10; i++,j++)
{
m = (st*)malloc(sizeof(st*));
m -> data = j;
printf("%d\n", m ->data);
a -> next = m;
a = a -> next;
}
a = NULL;
}
void inverselist(st **b) //逆置链表并输出
{
st *p, *succ,*k;
succ = NULL;
k = &*b;
p = k ->next;
k -> next = NULL;
while(p != NULL);
{
succ = p ->next;
p ->next = k ->next;
k ->next = p;
p = succ;
}
}
改了一些变量,比较好理解,大体架构没有变 - #include <stdio.h>
- #include <stdlib.h>
- typedef struct LNODElist
- {
- int data;
- struct LNODElist *next;
- }St;
- void reverslist(St **list);
- void initlist(St **list);
- void print(St *list);
- int main(void)
- {
- St *l = NULL;
-
- initlist(&l);
- print(l);
- reverslist(&l);
- print(l);
- return 0;
-
- }
- void initlist(St **list)
- {
- int i;
- St *pNew;
-
- for(i = 10; i > 0; i--)
- {
- pNew = (St *)malloc(sizeof(St));
- pNew->data = i;
- printf("%d ", pNew->data);
- pNew->next = *list;
- *list = pNew;
- }
- printf("\n");
- }
- void reverslist(St **list)
- {
- St *prev = NULL, *curr = *list, *succ;
-
- while( curr )
- {
- succ = curr->next;
- curr->next = prev;
- prev = curr;
- curr = succ;
- }
- *list = prev;
- }
- void print(St *list)
- {
- St *temp = list;
- while( temp )
- {
- printf("%d ", temp->data);
- temp = temp->next;
- }
- printf("\n");
- }
复制代码
|
|