![](https://csdnimg.cn/release/download_crawler_static/88431235/bg1.jpg)
题目 1:编程实现单链表的创建、查找、删除、插入操作。
答:
#include<stdio.h>
#include <stdlib.h>
typedef struct LNode
{int data;
struct LNode *next;
}LinkList;
void InitList(LinkList *&L) //
初始化
{L=(LinkList*)malloc(sizeof(LinkList));
L->next=NULL;
}
void CreateList(LinkList *&L,int a[],int n) //
头插
{LinkList*s;int i;
L=(LinkList*)malloc(sizeof(LinkList)); //
保证在头前有一个空节点
L->next=NULL;
for(i=0;i<n;i++)
{s=(LinkList*)malloc(sizeof(LinkList)); //
在空节点后,有内容的第一个节点前插入新建的节点
s->data=a[i];s->next=L->next;
L->next=s;}
}
int GetElem(LinkList*L,int e) //
遍历查找指定值位置
{int j=0,n=1;LinkList*p=L;
while(p->data!=e&&p!=NULL)
{p=p->next;n++;}
if(p->data!=e) return 0;
else return n-1; //
开头有一个空节点
}
int delet(LinkList *&L,int i) //
删除指定位置节点并返回其值
{LinkList *p=L;int j=0;int e;
while(p->next!=NULL&&j<i-1)
{p=p->next;++j;}
if(p->next==NULL||j>i-1) return 0;
else
{LinkList *q=p->next;p->next=q->next;
e=q->data; free(q); return e;}
}