本文共 1619 字,大约阅读时间需要 5 分钟。
1)创建和遍历链表思路
A、分配内存空间(malloc)
B、节点为NULL值
C、main函数中要得到链表的地址
D、遍历打印列表中每一个节点
E、当打印最后一个节点链表结束
2) 创建链表遍历链表方式
linklist.h文件
include <stdio.h> #include <stdlib.h> typedef struct link { char data; struct link *next; }linklist; linklist *CreateList_Front();linklist *CreateList_End(); void ShowLinklist(linklist *h);
|
linklist.c
#include "linklist.h" linklist *CreateList_Front() { linklist *head, *p; char ch; head = NULL; printf("依次输入字符数据(‘#’表示输入结束):\n"); ch = getchar(); while(ch != '#') { p = (linklist*)malloc(sizeof(linklist)); p->data = ch; p->next = head; head = p; ch = getchar(); //头插法算法简单 核心就两句p->next = head;head = p; } return head; } linklist *CreateList_End() { linklist *head, *p, *e; char ch; head = NULL; e = NULL; printf("请依次输入字符数据('#'表示输入结束):\n"); ch = getchar(); while(ch != '#') { p = (linklist*)malloc(sizeof(linklist)); p->data = ch; if(head == NULL) //先判断输入的是不是第一个节点 { head = p; } else { e->next = p; //e始终指向输入的最后一个节点 } e = p; ch = getchar(); } if(e != NULL) { e->next = NULL; } return head; } void ShowLinklist(linklist *h) { linklist *p; p = h; while(p != NULL) { printf("%c ", p->data); p = p->next; } printf("\n"); }
|
test.c
int main(void) { int choice; linklist *head; //head = (linklist*)malloc(sizeof(linklist)); while(1) { printf("单链表的创建\n"); printf("1.使用头插法创建单链表\n"); printf("2.使用尾插法创建单链表\n"); printf("3.链表输出显示\n"); printf("4.退出\n"); printf("做出选择:\n"); scanf("%d",&choice); switch(choice) { //头插法 case 1: head = CreateList_Front(); break; //尾插法 case 2: head = CreateList_End(); break; //输出链表 case 3: ShowLinklist(head); break; //退出程序 case 4: return 0; break; default: break; } } return 1; }
|
3)总结第五节
转载地址:http://gcuti.baihongyu.com/