导航
1.定义一个整型指针变量
2.插入n个数的链表,并且进行遍历
——————————————————————————————————————
1.定义一个整型指针变量
#include <cstdio> #include <cstdlib> int main() { int *p; p = (int *)malloc(sizeof(int)); //malloc会返回一个void*的地址,这里使用强制转换为int * *p = 4; printf("%d",*p); //输出指针p所指向的内存中的值 return 0; }
——————————————————————————————————————
2.执行插入链表,遍历链表
主要步骤:首先创建链表,链表中放入n个数,遍历链表
再插入一个数,再进行遍历链表查看结果
#include <cstdio> #include <cstdlib> struct node{ int data; struct node *next; //定义一个后继指针 }; int main() { int i,n,a; struct node *head,*p,*q,*t; printf("输入你要插入数的个数:"); scanf("%d",&n); head = NULL; //初始设置头节点为空 for(i=0;i<n;i++){ scanf("%d",&a); //动态申请一个空间p p = (struct node*)malloc(sizeof(struct node)); p->data = a; p->next = NULL; if(head == NULL) //如果头节点为空,则赋给头节点,否则赋值给上一次创建的节点的后继节点 head = p; else q->next = p; q = p; //q用来保存上次p的内存位置 } t = head; //让t的内存位置等于初始头节点的位置 while(t){ printf("%d ",t->data); t = t->next; } printf("\n请输入要插入链表的数:"); scanf("%d",&a); t = head; while(t) { if(t->next->data>a){ //如果当前节点的下一个节点大于输入的a p = (struct node*)malloc(sizeof(struct node)); p->data = a; p->next = t->next; //首先将t下一个节点的内存地址赋值给新创建的p的下一个地址 t->next = p; //然后再将p赋值给t的下一个节点 break; } t = t->next; } t = head; //让t的内存位置等于初始头节点的位置 while(t){ printf("%d ",t->data); t = t->next; } return 0; }
运行结果: