#include <stdio.h> #include <stdlib.h> //链表中节点的结构 typedef struct Link { int elem; struct Link *next; }link; //初始化链表的函数 link * initLink(); //用于输出链表的函数 void display(link *p); int main() { //初始化链表(1,2,3,4) printf("初始化链表为:\n"); link *p = initLink(); display(p); return 0; } //无头节点的链表 //link * initLink() { // link * p = NULL;//创建头指针 // link * temp = (link*)malloc(sizeof(link));//创建首元节点 // //首元节点先初始化 // temp->elem = 1; // temp->next = NULL; // p = temp;//头指针指向首元节点 // for (int i = 2; i<5; i++) { // link *a = (link*)malloc(sizeof(link)); // a->elem = i; // a->next = NULL; // temp->next = a; // temp = temp->next; // } // return p; //} //含头结点的链表 link * initLink() { link * p = (link*)malloc(sizeof(link));//创建一个头结点 link * temp = p;//声明一个指针指向头结点, //生成链表 for (int i = 1; i<5; i++) { link *a = (link*)malloc(sizeof(link));//申请一个新节点 a->elem = i;//第二个节点的数据域a->data=1; a->next = NULL;//指针域为空 //a所指向的节点连接在temp指向节点的后面(新节点插入链尾) temp->next = a; //指针temp每次都指向新链表的最后一个节点,其实就是 a节点,这里写temp = a也对(修改为指针) temp = temp->next; } return p; } //void display(link *p) { // link* temp = p;//将temp指针重新指向头结点 // //只要temp指针指向的结点的next不是Null,就执行输出语句。 // while (temp) { // printf("%d ", temp->elem); // temp = temp->next; // } // printf("\n"); //} void display(link *p) { link* temp = p;//将temp指针重新指向头结点 //只要temp指针指向的结点的next不是Null,就执行输出语句。 while (temp->next) { temp = temp->next; printf("%d", temp->elem); } printf("\n"); }
【数据结构】单链表初始化
最新推荐文章于 2024-08-05 19:59:13 发布