#include <stdio.h>
#include "stdlib.h"
#define lined_length 4//宏定义链表的最大长度是4
typedef struct Node{
int data;
int len;//这个用来检测链表的长度
struct Node *next;
}node;//建立一个链表的节点
void lined_list(node *S,int data){
if(S ->len == lined_length){
S ->data = data + 1;//即使是满了也要加1
S ->next = NULL;//当链表中的len等于链表最大值的时候我们就将链表的下一个节点赋值为空指针
}
else if(S ->len >lined_length){
printf("满了!\n");
}
else{//不是的话我们就将下一个节点的之地赋值给现在的地址
node *p = (node *)malloc(sizeof (node));//开辟新的链表空间
S ->data = data;//将输入的值赋值给链表的data
S ->next = p;//将下一个链表的地址赋值给这个链表的next
S ->len = S ->len + 1;//data每次都加1,这样可以加四次
printf("node%d ->data = %d\n",S ->len,S ->data);
}
}
int main() {
int num,i;
scanf("%d",&num);//输入建立多少个表
node *p = (node *)malloc(sizeof (node));//开辟一个内存空间,将地址返回给p
if(p==NULL){
printf("开辟失败!\n");
}
else{
printf("开辟成功!\n");
}
p ->data = 0;
p ->len = 0;
p ->next = NULL;//对p进行初始化
for(i = 0;i<num;i++){
lined_list(p,num++);
}
return 0;
}
在这段代码main函数的for循环中,如果我执行代码时是lined_list(p,num++)那么结果无论如何都会输出循环四次的结果,但是我用lined_list(p,num)就只会执行num输入的次数,大于四次的也是输出四次,这是为什么呢?请大家赐教