#include<stdio.h>//单链表的定义和基本操作 #include<stdlib.h>//malloc函数所需要的头文件 #include<stddef.h>//定义NULLL的头文件 typedef struct LNode//定义单链表的节点 { int data; struct LNode*next; }LNode; void Creatlinklist(LNode *&L,int a[],int n)//尾插法建立单链表 { int i; LNode*r; LNode*p; L=(LNode*)malloc(sizeof(LNode)); L->next=NULL; r=L; for(i=0;i<n;i++) { p=(LNode*)malloc(sizeof(LNode)); p->data=a[i]; r->next=p; r=r->next; } r->next =NULL; } void Creatlinklist2(LNode *&L,int a[],int n)//头插法建立单链表 { int i; LNode*p; L=(LNode*)malloc(sizeof(LNode)); L->next=NULL; for(i=0;i<n;i++) { p=(LNode*)malloc(sizeof(LNode)); p->data=a[i]; p->next=L->next; L->next=p; } } int FindAndDeletelem(LNode *&L,int x)//寻找并删除等于x的元素成功返回1失败返回0 { LNode *p; LNode *q; p=L; while(p->next!=NULL) { if(p->next->data==x) break; p=p->next ; } if(p->next==NULL) return 0; else { q=p->next; p->next=q->next; free(q); return 1; } } int Insertlist(LNode *&L,int i,int a)//在第i个元素的位置插入数据a(有头结点) { int j; LNode *p,*q; q=L; p=(LNode*)malloc(sizeof(LNode)); p->data=a; for(j=1;j<i;q=q->next) j++; p->next=q->next ; q->next=p; return 1; } int main()//测试程序 { LNode *L; int a[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; Creatlinklist(L,a,10); FindAndDeletelem(L,5); Insertlist(L,5,22); printf("%d",L->next->next->next->next->next->data); return 0; }
浙公网安备 33010602011771号