c语言 lt i lt,算法功能由线性表lt建立h指向链表

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include

#define max 15

#define NULL 0

struct llist{

int e[max];

int n;

};

struct node{

int data;

node *next;

};

void setnull(llist

{

lt.n = 0;

}

void creat(llist

{int i,d;

i = 0;

cout<

cout<

cin>>d;

while (d != -1){

lt.e[i++] = d;

++lt.n;

cin>>d;

}

}

void outllist(llist lt) //输出线性表lt中元素的值

{

int i;

cout<

for(i = 0;i < lt.n;++i)

cout<

cout<

}

void error(char err[]) //输出出错信息

{

cout<

}

int length(llist lt)

//函数功能为求线性表lt的表长

{

return lt.n;

}

void getelem(llist lt,int i,int &ai)

//算法功能取第i个元素的值,由ai返回

{

if (lt.n == 0)

error("err1");//表空出错

else if (i < 1 || i > lt.n)

error("err2");//i值出错

else ai = lt.e[i - 1];

}

void create(llist lt,node *&h)

//算法功能由线性表lt建立h指向链表

{

}

void outllink(node *h) //输出h指向链表中的结点数据

{

node *p;

p = h;

cout<

while(p){

cout<data<

p = p->next;

}

cout<

}

void insert_llink(node *&h,int ai,int x) //线性链表插入算法

{

node *i,*p,*q;

i = new node;

i->data = x;

if(h == NULL)

{

error("err1");//链表为空

cout<

}

else{if(h->data == ai){

i->next = h;

h = i;

}

else{

p = h;

while(p->data != ai && p->next != NULL){

q = p;

p = p->next;

}

if(p->data == ai){

q->next = i;

i->next = p;

}

else error("err2");//未找到数据域值为ai的结点

}

}

}

void delete_llink(node *&h,int x) //线性链表删除算法

{

node *p,*q;

if(h == NULL)

error("err1");//表空出错

else if(h->data == x){

p = h;

h = h->next;

p ->next = NULL;

delete(p);//由系统收回结点存储空间

}

else{

p = h;

while(p->data != x && p->next != NULL){

q = p;

p = p->next;

}

if (p->data == x){

q->next = p->next;

p->next = NULL;

delete(p);//由系统收回结点存储空间

}

else error("err2");//未找到数据域值等于x的结点

}

}

void main(void)

{

llist lt;

node *h;

char c;

int ai,x;

cout<

setnull(lt);

creat(lt);

outllist(lt);

h=NULL;

create(lt,h);

outllink(h);

do{

cout<

cout<>c;

switch(c){

case 'I':cout<

cout<

cin>>ai;

cout<

cin>>x;

insert_llink(h,ai,x);

outllink(h);

break;

case 'D':cout<

cout<

cin>>x;

delete_llink(h,x);

outllink(h);

break;

case 'O':cout<

outllink(h);

break;

case 'E':break;

default:error("命令字");

}

}

while(c != 'E');

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值