单链表的创建、插入和删除
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单链表的创建、插入和删除
(数据结构)
——SVS
#include
#include
#include
typedef int ElemType;
typedef int Status;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
void InitList_Link(LinkList L) //创建空链表
{
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
}
Status InsertList_Link(LinkList L,int i,ElemType e) //插入链表
{
LinkList s,p=L;
int j=0;
while(p&&j
if(!p||j>i-1)return -1;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;
s->next=p->next;
p->next=s;
return 1;
}
Status DeleteList_Link(LinkList L,int i,ElemType e) //删除链表{
LinkList q,p=L;int j=0;
while(p->next&&j
if(!(p->next)||j>i-1)return -1;
q=p->next;
e=q->data;
p->next=q->next;
free(q);
return 1;
}
void OutPutList_Link(LinkList L) //输出链表
{
printf("表中值为:");
LinkList p=L->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
void CreateList_Link(LinkList L,int len) //创建链表
{
int i;
LinkList s,p=L;
for(i=0;i { s=(LinkList)malloc(sizeof(LNode)); printf("N%d: ",i+1); scanf("%d",&s->data); s->next=NULL; p->next=s; p=s; } } int main() { int len; LinkList L; ElemType e; L=(LinkList)malloc(sizeof(LNode)); printf("请输入表长:"); scanf("%d",&len); CreateList_Link(L,len); OutPutList_Link(L); /*插入*/ int num1; int num2; printf("请输入要插入元素的位置:"); scanf("%d",&num1); printf("请输入要插入的元素:"); scanf("%d",&num2); InsertList_Link(L,num1,num2); printf("插入后:"); OutPutList_Link(L); int a; int b=0; printf("请输入要删除元素的位置:"); scanf("%d",&a); DeleteList_Link(L,a,b); printf("删除后:"); OutPutList_Link(L); }