c - 单链表初始化数据为什么是倒序进去的?
本文介绍了c - 单链表初始化数据为什么是倒序进去的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
学习数据结构,遇到问题,代码如下:
#include <stdio.h>
#include <stdlib.h>
//用结构体定义单链表
typedef int ElementType;
typedef struct Lnode {
ElementType num;
ElementType passwd;
struct Lnode * next;
}Lnode;
typedef Lnode * Llist;//定义了单链表指针类型Llist
/*----------------------获得当前表长----------------------*/
int Llength(Llist L){
Llist p;
int i = 0;
p = L;
while (p->next != NULL) {
i++;
p = p->next;
}
return i;
}
int main(int argc, const char * argv[]) {
Llist L,p,head;
L = (Llist)malloc(sizeof(Lnode));
//初始化单链表
L->next = NULL;
//置空单链表
int m = 20; //初始密码为20
int n = 7; //初始人数为7人
int pass[7] = {3,1,7,2,4,8,4}; //7个人各自的密码
//默认数据导入完成
for (int i = 0; i < n; i++) {
p = (Llist)malloc(sizeof(Lnode));
p->passwd = pass[i]; //初始化表中的密码
p->num = i+1; //初始化密码相对应的编号
p->next = L->next;
L->next = p; //移动指针指向下个元素
}
//初始化表完成
head = L->next; //设置头指针head指向表
printf("%d \n", head->num);
printf("%d \n", head->passwd);
return 0;
}
输出7 和 4 为什么第一个元素变成了我测试数据的最后一个元素,是倒序进入链表的,找不到问题,请大神帮忙看下,谢谢.代码是在Xcode中运行出这样的结果的.
解决方案
您好啊,我看了看这个代码,我觉得问题是这样的:是你的写法决定了他就是这样的。我大概画了一下您的这个程序的节点连接的过程,您看一下吧。图中的P节点按生成的先后顺序记为P1,P2,P3.....
最后就是这样的啦
所以就是倒着输入的链表中哦
这篇关于c - 单链表初始化数据为什么是倒序进去的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文