单链表的创建、插入和删除

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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&&jnext;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&&jnext;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);

}

相关文档
最新文档