C语言单链表创建,插入,删除

来源:互联网 发布:mac thunderbolt网桥 编辑:程序博客网 时间:2024/05/16 07:35
#include <stdio.h>#include <stdlib.h>typedef struct Node{int data; //数据域Node *next; //指针域,指向下一个Node节点}Node;Node *create(); //创建一个单链表int deleteFromList(Node *linkList, int i); //删除节点 成功返回0 否则-1int insertIntoList(Node *linkList, int i, int value);//插入节点 成功返回0 否则-1void display(Node *linkList);//遍历并打印链表void main(){Node *LinkList = create();//display(LinkList);insertIntoList(LinkList, 5, 30);display(LinkList);deleteFromList(LinkList, 5);display(LinkList);}Node *create(){int n = 20;Node *pList, *pNew, *pTail; pList = (Node *)malloc(sizeof(Node));pList->next = NULL;pTail = pList;//for(int i = 1; i <= n; i++){pNew = (Node *)malloc(sizeof(Node));if(pNew == NULL){printf("error!!");exit(0);}pNew->data = i;pNew->next = NULL;pTail->next = pNew;pTail = pNew;}pTail->next = NULL;return pList;}int insertIntoList(Node *linkList, int i, int value){//先查找是否有这个节点Node *p, *q;int j = 1; //计数p = linkList;while(p && j < i) //寻找第i个节点{p = p->next;++j;}if(!p || j > i){return -1;//第i个节点不存在,插入失败}//现在p是在第4个位置,p->next指向的是第五个值q = (Node *)malloc(sizeof(Node));q->data = value;q->next = p->next;//把第五个值及以后的链表下挂到q->next指针上p->next = q;//把q及上面下挂在q->next上的链接 下挂到p->next上return 0;}int deleteFromList(Node *linkList, int i){//检测是否存在第i个节点Node *Ptr;int j = 1;Ptr = linkList;while(Ptr->next && j < i){Ptr = Ptr->next;++j;}if(!(Ptr->next) || j > i){return -1;//不存在第i个节点}Ptr->next = Ptr->next->next;return 0;}void display(Node *linkList){while(linkList->next){printf("%d\n", linkList->next->data);linkList = linkList->next;}}


原创粉丝点击