首页 > 代码库 > 线性单链表的初始化、插入、删除功能实现
线性单链表的初始化、插入、删除功能实现
1 ////////////////////////////////////////////////////////// 2 // singlelist.cpp 3 // 4 // author:Leetao 5 ////////////////////////////////////////////////////////// 6 // 简介: 7 // 线性链表的实现 8 ////////////////////////////////////////////////////////// 9 /** 10 * 线性链表初始化,插入,删除功能的实现 11 * 12 * @author Leetao 13 * @version 1.0 14 * @date 2014.11.20 15 */ 16 17 #include<stdio.h> 18 #include<malloc.h> 19 20 //类型宏定义,此处定义为int型 21 typedef int Elem; 22 typedef int Status; 23 24 //线性表的单链式储存结构 25 typedef struct LNode 26 { 27 Elem data; 28 struct LNode *next; 29 30 }LNode,*LinkList; 31 32 //创建链表 33 Status InitList(LinkList &list) 34 { 35 //逆位序输入n个元素值,建立带表头结点的单链表list 36 int i; 37 LinkList p; 38 39 printf("Input the length of the list:\n"); 40 scanf("%d",&i); 41 42 list=(LinkList)malloc(sizeof(LNode)); 43 list->next=NULL; 44 45 46 printf("Input the data:\n"); 47 while(i>0) 48 { 49 p=(LinkList)malloc(sizeof(LNode)); 50 scanf("%d",&p->data); 51 p->next=list->next; 52 list->next=p; 53 i--; 54 } 55 return 0; 56 } 57 58 //打印链表 59 Status PrintList(LinkList &list) 60 { 61 LinkList p; 62 printf("the list is:\n"); 63 64 p=list->next; 65 66 while(p!=NULL) 67 { 68 printf("%d->",p->data); 69 p=p->next; 70 } 71 72 printf("NULL\n"); 73 74 return 0; 75 } 76 77 //线性表插入 78 Status ListInsert(LinkList &list,int i,Elem e) 79 { 80 LinkList p,s; 81 int j=0; 82 p=list; 83 84 while(p&&j<i-1) //寻找第i-1个结点 85 { 86 p=p->next; 87 ++j; 88 } 89 90 if(!p||j>i-1) //i小于1或者大于表长加1 91 { 92 printf("error!\n"); 93 } 94 95 s=(LinkList)malloc(sizeof(LNode)); //生成新结点 96 s->data=http://www.mamicode.com/e; //插入list中 97 s->next=p->next; 98 p->next=s; 99 100 return 0; 101 } 102 103 //链表删除 104 Status ListDelete(LinkList &list,int i)105 {106 //在带头结点的单链线性表list中,删除第i个元素值 107 LinkList p,q;108 int j=0;109 p=list;110 111 while(p->next&&j<i-1) //寻找第i个结点,令p指向其前驱 112 {113 p=p->next;114 ++j;115 }116 117 if(!(p->next)||j>i-1) //删除位置不合理 118 {119 printf("error!\n");120 } 121 122 //删除并释放结点 123 q=p->next;124 p->next=q->next;125 free(q);126 127 return 0;128 }129 int main()130 {131 int iindex,dindex;132 Elem ie;133 LinkList list;134 135 //初始化 136 InitList(list);137 PrintList(list);138 139 //插入140 printf("Input the position and the number you want to insert:\n");141 scanf("%d%d",&iindex,&ie); 142 ListInsert(list,iindex,ie);143 PrintList(list); 144 145 //删除146 printf("Input the position you want to delete:\n");147 scanf("%d",&dindex);148 ListDelete(list,dindex);149 PrintList(list);150 151 return 0;152 }
线性单链表的初始化、插入、删除功能实现
线性单链表的初始化、插入、删除功能实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。