博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
链表笔记之1
阅读量:5776 次
发布时间:2019-06-18

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

 

#include <stdlib.h>/*标准库函数*/

#include <stdio.h>/*I/O函数*/
#include <string.h>/*字符串函数*/
#include <ctype.h>/*字符操作函数*/
#include "linkedlist.h"
#include "hashtable.h"
#include "queue.h"

typedef struct student
{
    int id;
    char name[15];
} student; //节点定义

//链表的遍历

void print_linked_list(LinkedList* list)
{
    if(list->head == NULL)
    {
        printf("print_link函数执行,链表为空\n");
        return;
    }
    while(list->head!=NULL)
    {
        student* st=(student*)list->head->data;
        printf("%d %s\n",st->id,st->name);
        list->head=list->head->next;
    }
    printf("\n");
}

//链表的结点删除

void delete_linked_list_node(LinkedList* list,int no)
{
    if(list->head == NULL)
    {
        printf("print_link函数执行,链表为空\n");
        return;
    }

    LinkedListNode *node = NULL, *tmp = NULL;

    node=tmp=list->head;

    int id=((student*)node->data)->id;

    if(id==no)
    {
        list->head=node->next;
        free(node);
    }
    else
    {
        while((id!=no)&&(node->next!=NULL))
        {
            id=((student*)node->data)->id;
            tmp = node;
            node = node->next;
        }
        if(id==no)
        {
            tmp->next=node->next;
            free(node);
        }
    }
}

int main(int argc, char *argv[])

{
    /*
    LinkedList *list = NULL;
    list=linked_list_construct();
    int i=0;
    while(i<5)
    {
     LinkedListNode *node=NULL;
     node=(LinkedListNode *)malloc(sizeof(LinkedListNode));
     memset(node,0,sizeof(LinkedListNode));

     student* st=NULL;

     st=(student *)malloc(sizeof(student));
     memset(st,0,sizeof(student));

     st->id=i;

     sprintf(st->name,"%s%d","方欣_",i);
     node->data=st;
     linked_list_append_node(list,node);
     i++;
    }

    //linked_list_remove_node(list,node);

    //linked_list_destroy(list);
    //int ret=linked_list_is_empty(list);
    //printf("%s\n",ret==1?"链表为空":"链表非空");
    delete_linked_list_node(list,2);
    print_linked_list(list);*/

    /*
     HashTable* ht=NULL;
        ht=hash_table_construct(5);
        int j=0;
     while(j<5)
     {
      student* st=NULL;
      st=(student *)malloc(sizeof(student));
      memset(st,0,sizeof(student));
      st->id=j;
      sprintf(st->name,"%s%d","方欣_",j);
      hash_table_add_element(ht,st,j);
      j++;
     }

     int k;

     for(k=0;k<5;++k)
     {
      student* st=NULL;
         st=(student*)hash_table_get_element(ht,k);
      printf("%d %s\n",st->id,st->name);
     }*/

    /*

     hash_table_remove_element(ht,2);
     student* stu=NULL;
        stu=(student*)hash_table_get_element(ht,3);
        if(stu!=NULL)
        {
         printf("%d %s\n",stu->id,stu->name);
        }*/

    //int index=hash_table_get_index(ht,4);
    //printf("%d\n",index);

    //char* code="E:\\fxd\\hd_mw\\src\\dg_ip_program";

//    int index=hash_table_get_hash_code_from_string(code);
//    printf("%d\n",index);

    //hash_table_destroy(ht);

    Queue * qu=queue_construct();//初始化队列

    int j=0;
    while(j<5)
    {
        student* st=NULL;
        st=(student *)malloc(sizeof(student));
        memset(st,0,sizeof(student));
        st->id=j;
        sprintf(st->name,"%s%d","方欣_",j);
        queue_enqueue(qu,st);//入队
        j++;
    }
    int ret;
    ret=queue_length(qu);
    printf("%d\n",ret);

    /*

     queue_destroy(qu);//销毁队列
     ret=queue_is_empty(qu);
     printf("%s\n",ret==1?"队列为空":"队列非空"); */
    /*
    int k;
    for(k=0;k<5;++k)
    {
     student* st=NULL;
     st=(student *)malloc(sizeof(student));
     memset(st,0,sizeof(student));
     st=(student *)queue_dequeue(qu);//出队
     printf("%d %s\n",st->id,st->name);
    }*/
    return 0;
}

 

转载于:https://www.cnblogs.com/fx2008/archive/2011/10/09/2203419.html

你可能感兴趣的文章
C#反射实例应用--------获取程序集信息和通过类名创建类实例
查看>>
VC中实现文字竖排的简单方法
查看>>
会话标识未更新
查看>>
【设计模式】数据访问对象模式
查看>>
Tomcat8 配置Oracle11g数据源
查看>>
【PHP面向对象(OOP)编程入门教程】8.构造方法__construct()与析构方法__destruct()
查看>>
ThinkPHP常用配置路径
查看>>
阿里架构师:程序员必须掌握的几项核心技术能力
查看>>
程序员常用的六大技术博客类
查看>>
vue中动画的实现的几种方式
查看>>
Iceworks 2.8.0 发布,自定义你的 React 模板
查看>>
胖哥学SpringMVC:请求方式转换过滤器配置
查看>>
Kotlin 更加优雅的 Builder - 理解 with
查看>>
前端日拱一卒D6——字符编码与浏览器解析
查看>>
python学习笔记- 多线程
查看>>
换一种思维看待PHP VS Node.js
查看>>
举重若轻的人人车移动端数据平台
查看>>
Oracle回应用户锁定,自治数据库是更好选择
查看>>
深入理解浏览器的缓存机制
查看>>
使用 Swift 3.0 操控日期
查看>>