单链表插入新元素

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

数据结构作业:

计科1301 张睿算法目的:实现在一个线性单链表中插入一个新的元素

设计思路:构建一个线性单链表,获得头指针。输入想要插入新元素的位置,和想要插入的元素。通过头指针找到相应位置,插入元素,输出插入了新元素的链表。

设计方案:

1、单链表的类型定义:

typedef int ElemType;

typedef int Status;

typedef struct LNode{

ElemType data;

struct LNode *next;

}LNode,*LinkList;

2、构建单链表:

void creatlist(LinkList &L)

{

int x,k;

LinkList p;

printf("输入想要插入的链表的长度:\n");

scanf("%d",&x);

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

L->next=NULL;

printf("输入%d个元素:",x);

for(k=x;k>0;--k)

{

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

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

p->next=L->next;

L->next=p;

}

}

3、插入新元素:

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

{LinkList p,s;

p=L;

int j=0;

while(p&&j

{p=p->next;++j;}

if(!p||j>i-1) 若没有第i个元素则输出错误

return ERROR;

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

s->data=e;s->next=p->next;

p->next=s; 将新元素e值放在原来第i元素处,其余元素

return OK; 向后移一位

}

4、将链表输出:

void PrintList_L(LinkList L)

{

L=L->next;

printf("链表中的元素为:");

while(L) 运用循环结构和头指针向后逐位输出链表

{

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

L=L->next;

}

return;

}

5、主函数体:

int main()

{

int n;

int t;

ElemType e;

LinkList L;

creatlist(L);

PrintList_L(L);

printf("\n你想在第几个元素之前插入一个元素:\n");

scanf("%d",&n);

printf("输入想要插入的元素的值:\n");

scanf("%d",&t);

ListINsert_L(L,n,t);

PrintList_L(L);

return OK;

}

6、运行结果

相关文档
最新文档