线性链表的创建、查找、插入、删除(c语言)

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

线性链表的创建、查找、插入、删除(c语言)

#include

#include

#define OK 1

#define ERROR 0

#define ElemType int

typedef int Status;

typedef struct LNode

{

ElemType data;

struct LNode *next;

ElemType *elem;

int cur;

}LNode, *LinkList;

void printList(LinkList &L)

{

LNode *q;

q=L;

q->next=L->next;

printf("您的线性链表为:");

while(q->next!=NULL)

{

q=q->next;

printf("%d ",q->data);

}

printf("\n");

}

Status ListInsert_L(LinkList &L,int i,ElemType e)

{

LNode *p,*s;

p=L;

int j=0;

while(p&&j

p=p->next;

++j;

}

if(!p||j>i-1)

return ERROR;

s=(LinkList)malloc(sizeof(LNode));

s->data=e;

s->next=p->next;

p->next=s;

return OK;

} //在链表对应位置插入数字

Status ListDelete_L(LinkList &L,int i,ElemType e) {

LNode *p,*q;

p=L;

int j=0;

while(p->next&&j

{

p=p->next;

++j;

}

if(!(p->next)||j>i-1)

return ERROR;

q=p->next;

p->next=q->next;

e=q->data;

free(q);

printf("删除的数字是: %d\n",e);

return OK;

} //按位置删除

Status ListDelete(LinkList &L,int i,ElemType e) {

LNode *p;

i=1;

p=L;

while(e!=p->next->data)

p=p->next;

i++;

}

if(e==p->next->data)

{

p->next=p->next->next;

printf("删除的数字所在位置是: %d\n",i);

return OK;

}

else

return ERROR;

} //按数字删除

void CreateList_L(LinkList &L,int n)

{

struct LNode *p;

L=(LinkList)malloc(sizeof(LNode));

L->next=NULL;

printf("输入链表数据:");

for(int i=1;i<=n;i++)

{

p=(LinkList)malloc(sizeof(LNode));

scanf("%d",&p->data);

p->next=L->next;

L->next=p;

}

} //创建链表

int LocateElem_L(LinkList &L,ElemType e)

{

LNode *p;

int i=1;

p=L->next;

while(e!=p->data)

{

p=p->next;

i++;

}

printf("您查找数字%d 在链表上的位置为:%d\n",e,i);

return 0;

}//查找

int main()

{

int i,n;

LinkList myLinkList;

printf("请输入链表中数字的数目:");

scanf("%d",&n);

CreateList_L(myLinkList,n);

printList(myLinkList);

for( ; ; )

{

printf("请选择操作:0、查找;1、插入;2、删除;3、退出\n请输入您的选择:" );

scanf("%d",&i);

while(i<0||i>3)

{

printf("输入错误,请重新输入!\n请输入您的选择:");

scanf("%d",&i);

}

switch(i)

{

case 0:

{

int e;

printf("输入想要查找的数字:");

scanf("%d",&e);

LocateElem_L(myLinkList,e);

break;

}

case 1:

{

int i,e;

printf("输入想要插入数字的位置:");

scanf("%d",&i);

相关文档
最新文档