单链表的基本操作

xiaoxiao2021-02-28  25

单链表的基本操作

首先预定义链表结构和结点

typedef struct Node{ ElemType data; struct Node *next; }Node; typedef struct Node *LinkList; /*定义LinkList*/

接下来贴几个基本操作

/*初始条件:顺序线性表L 不存在*/ /*操作结果:建立一个头结点*/ Node *LinkListInit(){ Node *p; p = (Node *)malloc(sizeof(Node)); /*建立一个大小与Node结点大小相同的结点*/ if(!p){ printf("分配空间失败!"); } p->next = NULL; return p; } /*初始条件:顺序链表L 已存在*/ /*操作结果:在链表L 中填入元素*/ Node *LinkListCreat(){ Node *q, *p, *L; p = (Node *)malloc(sizeof(Node)); L = (Node *)malloc(sizeof(Node)); //建立一个头结点 //开始建立新的链表的后续项目 q = (Node *)malloc(sizeof(Node)); printf("请输入该链表的元素(0表示结束):"); scanf("%d", &q->data); int m = q->data; while(m != 0){ // 判断输入是否为0 p->next = q; p = q; q = (Node *)malloc(sizeof(Node)); printf("请输入该链表的元素(0表示结束):"); scanf("%d", &m); q->data = m; } } /*初始条件:顺序线性表L 已存在,1 <= i <= ListLength(L)*/ /*操作结果:用e 返回L 中第i 个数据元素的值*/ Status GetElem(LinkList L, int i, ElemType *e){ int j; LinkList p; /*声明一指针p*/ p = L->next; /*让p 指向链表L的第一个结点*/ j = 1; /*j 为计数器*/ while(p && j < i){ /*p 不为空 且计数器j还没有等于i 时,循环继续*/ p = p->next; /*让p 指向下一个结点*/ j++; } if(!p || j > i){ /*当第i 个结点不存在时*/ return ERROR; } * e = p->data; /*取第i 个结点的数据*/ return Ok; }
转载请注明原文地址: https://www.6miu.com/read-1400405.html

最新回复(0)