博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c实现的list
阅读量:5749 次
发布时间:2019-06-18

本文共 1912 字,大约阅读时间需要 6 分钟。

// clist.cpp : 定义控制台应用程序的入口点。

//
#include "stdafx.h"
#include <stdio.h>
#include <malloc.h> //动态分配内存
#include <stdlib.h> //exit 函数
#include <stdbool.h> //布尔值函数
#include <string.h>
struct node {
    char * str;
    int len;
    node* next;
    //node* first;
    //node* last;
};
node* first = NULL;
node* last = NULL;
node* prev = NULL;
node* search(const char * str);
/*node* del(node* list) {
    if (list == NULL)
        return;
    free(list->str);
    return list->next;
}*/
node* new_node() {
    node* n = (node*)malloc(sizeof(node) + 1);
    return n;
}
node* first_node() {
    return first;
}
node* last_node() {
    return last;
}
void delete_node(const char* str) {
    node* node_to_del = search(str);
    prev->next = node_to_del->next;
    free(node_to_del->str);
    node_to_del->str = NULL;
    free(node_to_del);
    node_to_del = NULL;
    prev = first;
}
void update(const char* str, const char* newstr) {
    node* node_to_update = search(str);
    strcpy(node_to_update->str, newstr);
    node_to_update->len = strlen(newstr);
    node_to_update->str[node_to_update->len] = '\0';
}
node* list_init(const char* first_string) {
    first = last = new_node();
    first->str = (char*)malloc(sizeof(first_string)+1);
    strcpy(first->str, first_string);
    first->len = strlen(first_string);
    first->str[first->len] = '\0';
    first->next = NULL;
    return first;
}
void add(const char * str) {
    node* n = new_node();
    n->str = (char*)malloc(sizeof(str)+1);
    n->next = NULL;
    n->len = strlen(str);
    n->str[n->len] = '\0';
    strcpy(n->str, str);
    last->next = n;
    last = n;
}
node* search(const char * str) {
    node* n = first;
    prev = first;
    while (n != NULL && n->next != NULL) {
        if (strcmp(str, n->str) == 0)
            return n;
        prev = n;
        n = n->next;
    }
    return n;
}
int main()
{
    node* head = list_init("head");
    add("hello,first");
    add("hello,second");
    add("cc");
    add("dd");
    add("ee");
    add("ea");
    add("eb");
    add("ec");
    add("ed");
    add("ee");
    node* dd_node = search("ee");
    delete_node("ee");
    update("hello,second", "second");
    return 0;
}

转载地址:http://pwezx.baihongyu.com/

你可能感兴趣的文章
文献综述二:UML技术在行业资源平台系统建模中的应用
查看>>
阿里云服务器 linux下载 jdk
查看>>
Swift 学习 用 swift 调用 oc
查看>>
Loadrunner应用系统测试
查看>>
第三章 Python 的容器: 列表、元组、字典与集合
查看>>
struct timeval
查看>>
stringstream中的clear()与str()
查看>>
判断sqlserver临时表等临时资源是否存在
查看>>
微信小程序开发 -- 点击右上角实现转发功能
查看>>
ERP实施随笔
查看>>
前端布局学习
查看>>
问题解决-Failed to resolve: com.android.support.constraint:constraint-layout:1.0.0-alpha7
查看>>
openURL的使用
查看>>
与MS Project相关的两个项目
查看>>
[转载]ASP.NET MVC Music Store教程(1):概述和新项目
查看>>
css实现单行,多行文本溢出显示省略号……
查看>>
解决数据丢失问题
查看>>
RAID在SQL Server中的应用(RAID几种级别)
查看>>
WCF Http Get 方法返回 400 Bad Request
查看>>
GC DevKit 快速入门
查看>>