数据结构单项链表复习

编程入门 行业动态 更新时间:2024-10-27 05:34:16

<a href=https://www.elefans.com/category/jswz/34/1769880.html style=数据结构单项链表复习"/>

数据结构单项链表复习

#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;//函数声明
Node * findNodeAtX(Node *head,int x);
void loopLinkList(Node *head);/*** 在链表第x个位置上插入元素e* */
Status LiskInsert(Node **Phead, int x, ElemType e)
{if(x == 1){Node *p = (Node *)malloc(sizeof(Node));p->data = e;p->next = *Phead;*Phead = p;return OK;}Node *s =  findNodeAtX(*Phead,x-1);if(s == NULL){printf("参数i错误");return ERROR;}else{Node *p = (Node*)malloc(sizeof(Node));p->data = e;//A->B->Cp->next = s->next;s->next = p;return OK;}
}
/*** 删除链表第x个元素,有错误* */
Status removeAtX(Node **Phead, int x, ElemType *e)
{Node *p,*s;//如果删除的是第一个结点if(x == 1){s = *Phead;if(*Phead == NULL)return ERROR;else{*Phead = (*Phead)->next;free(s);//loopLinkList(*Phead);return OK;}}p = findNodeAtX(*Phead,x-1);if(p==NULL){printf("第%d个结点不存在\n",x-1);return ERROR;}else if(p->next == NULL){printf("第%d个结点不存在\n",x);return ERROR;}else{//A->B->Cs = p->next;*e = s->data;p->next = s->next;free(s);return OK;}
}
/*** 创建链表* */
Node * CreateList()
{Node *head=NULL, *p,*q;int length;printf("输入结点个数");scanf("%d",&length);for(int i = 0; i < length; i++){q = (Node *)malloc(sizeof(Node));q->next = NULL;if(head == NULL)head = q;elsep->next = q;printf("输入该结点存放的数据");scanf("%d",&q->data);p = q;}return head;
}
/*** 遍历链表* */
void loopLinkList(Node *head)
{Node *p = head;printf("链表中的数据\n");while(p!=NULL){printf("%d\n",p->data);p = p->next;}
}
/*** 找到链表第X个节点* */
Node * findNodeAtX(Node *head,int x)
{int j = 1;Node *findNode = head;while(findNode!=NULL && j<x){findNode = findNode->next;j++;}//如果改成if(p==NULL)return NULL;esle return p;//不可以如果x为负数则返回的是headif(j == x)return findNode;elsereturn NULL;
}
/*** 按值查找* */
Node * findElem(Node *head,ElemType find)
{//空指针的意思就是什么也不指,而指向空的指针不是空指针Node *p = head;while(p!=NULL && p->data!=find){p = p->next;}return p;
}int  main(int argc, char const *argv[])
{Node *myList;ElemType *e;myList = CreateList();LiskInsert(&myList,1,9);loopLinkList(myList);removeAtX(&myList,1,e);    loopLinkList(myList);return 0;
}

运行结果

更多推荐

数据结构单项链表复习

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

发布评论

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

>www.elefans.com

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