数据结构实验二

#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0

typedef struct  LNode
{
     int  data;    //结点的数据域
     struct LNode *next;//结点的指针域
}LNode,*LinkList;

LNode* Create_LinkList()//尾插入法创建链表
{   int data ;
    LNode *head, *p, *q;
    head=(LNode *)malloc(sizeof(LNode)); 
    p=head;
    p->next=NULL;    /*  创建单链表的表头结点 */
    while (1)
    { 
        scanf("%d", &data);
        if (data==-1)  break ;
        q= (LNode *)malloc(sizeof(LNode)); 
        q->data=data;     //   数据域赋值 
        q->next=p->next;    
        p->next=q;    
        p=q;        /*新创建的结点总是作为最后一个结点*/
    }
    return (head);   
}

int ListInsert_L(LinkList &L, int i, int e) 
{ //在带头结点单链线性表L的第i个元素之前插入元素e
 //在此处之后插入代码
    int j;
    LinkList p,s;
    p=L;
    j=0;
    while(p&&j<i-1)
    {
        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;

int  ListDelete_L(LinkList &L, int i, int &e) 
{// 在带头结点的单链线性表L中,删除第i个元素,并由e返回其值
 //在此处之后插入代码    
    int j;
    LinkList p,r;
    p=L;
    j=0;
    while(p->next&&j<i-1)
    {
        p=p->next;
        ++j;
    }
    if(!(p->next)||j>i-1)
        return ERROR;
    r=p->next;
    p->next=r->next;
    e=r->data;
    free(r);
    return OK;

void print_LinkList(LinkList L)
{
    LinkList p;
    p=L->next;
    if(p==0)
        printf("Linklist is null!\n");
    else
    {
        printf("head");
        do
        {
            printf("->%d",p->data);
            p=p->next;
        }
        while(p!='\0');
        printf("->end\n");
    }
}

void main()
{
    LinkList head;
    head=Create_LinkList();
    print_LinkList(head);
    //在此处之后插入代码
    int  ListDelete_L(LinkList &L, int i, int &e);
    int ListInsert_L(LinkList &L, int i, int e);
}
 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值