代码中需要注意的一些事项
1.head == NULL因为链表还没有被创建所以头指针应为空
2.创建头指针的主要目的还是为了方便遍历链表
3.if(head==NULL)
head = p;
else
q->next = p;
这段代码的意思是如果没有头指针就让p去当头指针,如果有头指针就让头指针的指针指向p的地址
4.q=p因为p等下还要去创建其它节点所以把p赋值给q
5.使用malloc开辟内存想着使用free命令去释放掉内存
C++示例代码如下:
//尝试来实现一波链表 //输入: // 5 //1 2 3 4 5 //输出: //1 2 3 4 5 #include#include using namespace std; struct node { int data; struct node *next; }; int main() { system("color f5"); struct node *p,*q,*head,*t; int a,b,c,d; cin >> a; head = NULL; for(b=0;b> c; p = (struct node *)malloc(sizeof(struct node )); p->data = c; p->next = NULL; if(head==NULL) { head = p; } else { q->next = p; } q=p; } t = head; while(t!=NULL) { cout << t->data; t=t->next; } free(p);//使用free命令释放掉动态申请的内存 system("pause"); return 0; }
C语言代码如下
//尝试来实现一波链表 //输入: // 5 //1 2 3 4 5 //输出: //1 2 3 4 5 #include#include //使用malloc动态内存分配必须使用此头文件 struct node { int data;//用于存储数据 struct node *next;//指针域用于存储下一个结点的地址 };//注意细节 int main() { system("color f5"); int n; scanf("%d",&n); struct node *p,*head,*q,*t; int a,b,c,d,i; head = NULL;//把头指针设为空 for(i=0;i data = a;//输入的就是数据嘛!所以当然要把其放在数据域上喽 p->next = NULL;//当前仅仅创建的是第一个结点,所以当然要让其指针域为空 if(head==NULL) { head = p; } else { q->next = p; } q = p; } t = head; while(t!=NULL) { printf("%d",t->data); t=t->next; } system("pause"); return 0; }



