线性表链式存储结构之单链表的访问、插入、删除

编程入门 行业动态 更新时间:2024-10-27 15:29:30

线性表<a href=https://www.elefans.com/category/jswz/34/1766780.html style=链式存储结构之单链表的访问、插入、删除"/>

线性表链式存储结构之单链表的访问、插入、删除

在访问,插入和删除时,给Node *p赋值是赋头结点还是赋第一个结点?在循环和判断时是使用p还是p->next呢?

#include<stdio.h>
#include<stdlib.h>
//函数执行后返回的状态值
#define OK 1
#define ERROR 0//函数执行后返回的状态值
typedef int Status;
//元素的数据类型,这里假设为int
typedef int ElemType;//组成链表的单个结点的结构体
typedef struct node
{//存放数据ElemType data;//指向下一个结点struct node *next;
}Node;/*** 获得链表第X个位置上的元素,* 返回值可以返回元素,不过这样的话状态值就不能返回了,因为状态值可能和需要返回的数据类型不是一个类型* 所以使用EleType *e 来带出找到的元素。* */
Status getElemAtX(Node head, int x, ElemType *e)
{//计数器int j = 1;Node *p = (&head)->next;while(p!=NULL && j < x){j++;p = p->next;}if(p == NULL || j > x)return ERROR;*e = p->data;return OK;
}/*** 在链表第x个位置上插入元素e* */
Status LiskInsert(Node *head, int x, ElemType e)
{//计数器int j = 1;Node *p,*s;p = head;while(p!=NULL && j < x){j++;p = p->next;}//第x个结点不存在if(p == NULL || j>x)return ERROR;s = (Node *)malloc(sizeof(Node));s->data = e;s->next = p->next;p->next = s;return OK;
}/*** 删除链表第x个元素* */
Status LiskInsert(Node *head, int x, ElemType *e)
{//计数器int j = 1;Node *p,*q;p = head;while(p->next!=NULL && j < x){j++;p = p->next;}//第x个结点不存在if(p->next == NULL || j>x)return ERROR;q = p->next;p->next = q->next;*e = q->data;free(q);return OK;
}

更多推荐

线性表链式存储结构之单链表的访问、插入、删除

本文发布于:2023-07-28 20:25:54,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1300347.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:链式   链表   结构   线性表

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!