数据结构-链表的基础操作实现

实现的基础操作有:

1.链表的创建

2.链表中元素的删除

3.向链表添加元素

4.链表输出显示

以下代码用c++语法实现,与malloc函数配套使用的free函数操作偷懒未写。此代码仅为自己练习用,有书写不规范的地方请见谅。

代码如下:

#include <iostream>
typedef struct linknode
{
    int data;
    struct linknode* next;           //链表结构体
}linknode,*linklist;


using namespace std;
int main(int argc, const char * argv[]) {
    bool install_linklist(linklist& p);
    bool display_linklist(linklist p);                                                  //链表各功能函数
    bool delete_linklist(linklist p,int location);
    bool add_data_linklist(linklist p,int location,int data);
    linklist mylist;
    int number;
    int data;
    cout<<"please install mylist(write 9999 to exit)"<<endl;
    install_linklist(mylist);
    cout<<"finsh install!"<<endl;
    cout<<" mylist is :"<<endl;
    display_linklist(mylist);
    cout<<"please choose one element's location in mylist to be deleted"<<endl;
    cin>>number;
    if (delete_linklist(mylist, number))
    {
    cout<<"mylist is: "<<flush;
    display_linklist(mylist);
    cout<<"after deleted"<<endl;
    }
    cout<<"please add one data into mylist:"<<endl;
    cin>>data;
    cout<<"choose location:"<<endl;
    cin>>number;
    add_data_linklist(mylist, number, data);
    cout<<"mylist is:"<<flush;
    display_linklist(mylist);
    return 0;
}


bool install_linklist(linklist& p)    // 链表的创建函数
{
    int data;
    linknode* tempt;
    linknode* q;
    p=(linklist)malloc(sizeof(linknode));
    q=p;
    cout<<" enter your data for mylist:"<<endl;
    cin>>data;
    while (data!=9999) {
        tempt=(linknode*)malloc(sizeof(linknode));
        tempt->data=data;
        q->next=tempt;
        q=tempt;
        cin>>data;
    }
    return 1;
}


bool display_linklist(linklist p)    //链表遍历显示函数
{
    linknode* test;
    test=p->next;
    while (test!=NULL) {
        cout<< test->data <<flush;
        cout<<"  "<<flush;
        test=test->next;
    }
    cout<<endl;
    return 1;
}


bool delete_linklist(linklist p,int location)   //删除链表中任一位置数据函数
{
    int count=0;
    linklist q;
    linklist tempt;
    q=p;
    while (q->next!=NULL) {
        count=count+1;
        q=q->next;
    }
    if (location>count)
    {
        cout<<"ERROR!"<<endl;
        return 0;
    }
    else
    {
        q=p;
        for (int i=0; i<location-1; i++) {
            q=q->next;
        }
        tempt=q;
        q=q->next->next;
        tempt->next=q;
        cout<<" delete successful!"<<endl;
        return 1;
    }
}
bool add_data_linklist(linklist p,int location,int data)  //链表添加数据函数
{
    int count=0;
    linklist q;
    linklist sample;
    q=p;
    while (q->next!=NULL) {
        count=count+1;
        q=q->next;
    }
    if (location>count)
    {
        cout<<"ERROR!"<<endl;
        return 0;
    }
else
{
    q=p;
    for (int i=0; i<location-1; i++) {
        q=q->next;
    }
    sample=(linknode*)malloc(sizeof(linknode));
    sample->data=data;
    sample->next=q->next;
    q->next=sample;
    
}
    return 1;
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值