最众所周知单链表是408考研常考的一个数据结构考点之一,那么今天给大加分享一下我的学习成果。
今天我学了单链表的创建和读取,采用头插和尾插法可以新建一个单链表,以及打印单链表。
#define _CRT_SECURE_NO_WARNINGS #include#include typedef int ElemType; typedef struct LNode { ElemType data; struct LNode* next;//结构体指针,指向下一个结点 }LNode,*linkList; //头插法新建链表 linkList CreatList_head(linkList& L) { linkList s; int x; L = (linkList)malloc(sizeof(LNode)); L->next = NULL; scanf("%d", &x); while (x != 9999) { s = (linkList)malloc(sizeof(LNode)); s->data = x; s->next = L->next; L->next = s; scanf("%d", &x); } return L; } //尾插法新建链表 linkList CreatList_trail(linkList& L) { int x; L = (linkList)malloc(sizeof(LNode));//申请头节点的空间 LNode* s, * r = L;//linkList s,r=L;也可以 //r代表链表表尾节点,指向链表尾部 scanf("%d", &x); while (x!=9999) { s = (LNode*)malloc(sizeof(LNode));//为新插入的节点申请一个新空间 s->data = x; r->next = s;//让尾部节点指向新的节点 r = s;//r移到新的表尾节点 scanf("%d", &x); } r->next = NULL;//尾节点指针赋空 return L; } //打印链表函数 void PrintList(linkList L) { L = L->next; while (L != NULL) { printf("%3d", L->data);//打印当前节点的数据 L = L->next;//指向下一个节点 } printf("n"); } void PrintList2(linkList L) { L = L->next; while (L != NULL) { printf("%3d", L->data);//打印当前节点的数据 L = L->next;//指向下一个节点 if (L != NULL) { printf(" "); } } printf("n"); } int main() { linkList L;//链表头,结构体指针类型 CreatList_head(L);//头插 PrintList2(L); CreatList_trail(L);//尾插 PrintList2(L);//打印 return 0; }
请读者仔细研读,弄懂每句代码的意思,如果大佬们有更简捷的实现方法,多谢大佬们赐教。



