C语言将结点s赋给表L,高手速度来..跪求数据结构用C语言.编写1.创建链表L要用到以下? 爱问知识人...

以前的实验题。

#define OK 1

#define NULL 0

#define ERROR 2

#define ElemType int

#include "iostream。

h"

#include "stdio。h"

#include "stdlib。

h"

typedef struct LNode

{ int data;

struct LNode *next;

}LNode,*LinkList;

LinkList CreateList_L(LinkList L, int n)

//建立单链表

{

LinkList p,q;

int i;

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

L->next = NULL;

q=L;

for (i = 1; i data);

p->next = NULL;

q->next = p;

q=p;

}

return L;

}

int print( LinkList L) //输出链表

{ LinkList p;

p = L->next;

if (p!=NULL)

{

while(p)

{

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

p = p->next;

}

}

else

coutnext;

j=0;

while(p!=NULL)

{ j ;p=p->next; }

return j;

}

int CleatList_L(LinkList L) //清空链表元素

{

LinkList p;

while(L->next)

{

p=L->next;

L->next=p->next;

free(p);

}

coutnext; j;

} //寻找第i-1个结点

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

return ERROR; // i 大于表长或者小于1

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

s->data = e;

s->next = p->next; // 插入L中

p->next = s;

return OK;

}

int ListDelete_L(LinkList L, int i, ElemType &e) //在带头结点的单链表线性表L中,删除第i个元素,并由e返回其值

{LinkList p,q;

int j;

p = L; j = 0;

while (p->next && j next; j; }

// 寻找第 i 个结点,并令 p 指向其前趋

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

return ERROR; // 删除位置不合理

q = p->next; p->next = q->next; // 删除并释放结点

e = q->data; free(q);

return OK;

}

int GetElem_L(LinkList L,int i,char &e) // L是带头结点的链表的头指针

//当第i个元素存在时,其值赋给e并返回ok,否则返回ERROR

{LinkList p;int j;

p=L->next;

j=1;

while(p&&jnext;

j;

}

if(!p||j>i)return ERROR; // 第 i 个元素不存在

e=p->data;// 取得第 i 个元素

return e;

}

void showmenu()

{

cout>n;

L=CreateList_L(L,n);

showmenu();

cin>>choice;

while(choice!=0)

{

switch(choice)

{

case 1:

cout>n;

L=CreateList_L(L,n);

case 2:print(L); break;

case 3:

printf("length:%d ",ListLength(L));

break;

case 4:

CleatList_L(L);

break;

case 5:

cout>i;

cout>e;

ListInsert_L(L,i,e);

break;

case 6:

cout>i;

ListDelete_L(L,i,n) ;

break;

case 7:

cout>i;

cout>choice;

}

}。

全部

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值