zoukankan      html  css  js  c++  java
  • 线性表的链式存储集成

    main.c

    #include<stdlib.h>
    #include<stdio.h>
    #include"linklist.h"
    
    typedef struct Teacher
    {
    	LinkListNode node;
    	int age;
    	char name[65];//c语言中没有string类型
    }Teacher;
    
    int main()
    { 
    	int i = 0;
    	Teacher t1, t2, t3, t4;
    	int rcapacity = 0;
    	int rlegth = 0;
    	int ret = 0;
    	LinkList * list = NULL;
    
    	t1.age = 21;
    	t2.age = 22;
    	t3.age = 23;
    	t4.age = 24;
    
    	list = LinkList_Create();
    
    
    	ret = LinkList_Insert(list, (LinkListNode*)(&t1), 0);
    	ret = LinkList_Insert(list, (LinkListNode*)(&t2), 0);
    	ret = LinkList_Insert(list, (LinkListNode*)(&t3), 0);
    	ret = LinkList_Insert(list, (LinkListNode*)(&t4), 0);
    	if (list == NULL)
    	{
    		printf("2   list == NULL 
    ");
    		return -1;
    	}
    
    	//printf("%d
    ", LinkList_Length(list));
    	
    	for (i = 0; i < LinkList_Length(list); i++)
    	{
    	//	printf("%d  ", LinkList_Length(list) );
    		Teacher * temp = (Teacher *)LinkList_Get(list, i);
    		printf(" %d  ", temp->age);
    	} 
    
    	LinkList_Delete( list, 0);
    	printf("hello
    ");
    }
    

      

    linklist.h

    #pragma once
    
    typedef void LinkList;
    
    typedef struct _tag_LinkListNode
    {
    	struct _tag_LinkListNode* next;
    }LinkListNode;
    
    LinkList * LinkList_Create();
    
    void LinkList_Destory(LinkList *list);
    
    
    void LinkList_Clear(LinkList* list);  
    
    int LinkList_Length(LinkList* list);
    
    
    
    int LinkList_Insert(LinkList* list, LinkListNode* node, int pos);
    
    LinkListNode* LinkList_Get(LinkList* list, int pos);
    
    LinkListNode* LinkList_Delete(LinkList* list, int pos);
    

      

    linklist.c

    #include "linklist.h"
    #include<stdlib.h>
    #include<stdio.h>
    
    typedef struct _tag_LinkList
    {
    	int length;
    	LinkListNode header;
    
    }TLinkList;
    
    LinkList * LinkList_Create()
    {
    	TLinkList *Tlist = NULL;
    	Tlist = (TLinkList*)malloc(sizeof(TLinkList));
    	memset(Tlist, 0, sizeof(TLinkList));
    }
    
    void LinkList_Destory(LinkList *list)
    {
    	if (list != NULL)
    	{
    		free(list);
    		list = NULL;
    	}
    }
    void LinkList_Clear(LinkList* list)
    {
    	TLinkList *Tlist = NULL;
    	if (list == NULL)
    	{
    		return;
    	}
    	Tlist = (TLinkList *)list;
    	Tlist->length = 0;
    	Tlist->header.next = NULL;
    }
    
    
    
    
    int LinkList_Insert(LinkList* list, LinkListNode* node, int pos)
    {
    	TLinkList *Tlist = NULL;
    	int i = 0;
    	LinkListNode *current = NULL;
    	if (list == NULL || node == NULL || pos < 0) //检查这一步总是遗忘
    	{
    		return 0;
    	}
    	Tlist = (TLinkList *)list;
    	current = &(Tlist->header); // 这里忘记写了
    	for (i = 0; i < pos; i++) // 这里写错了
    	{
    		current = current->next;
    	}
    
    	node->next = current->next;
    	current->next = node;
    	Tlist->length++;
    	//printf("LinkList_Insert 中的length = %d  
     ", Tlist->length);
    	return 0;
    }
    
    int LinkList_Length(LinkList* list)
    {
    	int j = 0;
    	TLinkList *Tlist = NULL;
    	if (list == NULL)
    	{
    		return -1;
    	}
    	Tlist = (TLinkList *)list;
    	//printf("LinkList_Length 中的length = %d  
     ", Tlist->length);
    
    	return Tlist->length;
    }
    
    LinkListNode* LinkList_Get(LinkList* list, int pos)
    {
    	TLinkList *Tlist = NULL;
    	int i = 0;
    	LinkListNode *current = NULL;
    	if (list == NULL  || pos < 0) //检查这一步总是遗忘
    	{
    		return;
    	}
    	Tlist = (TLinkList *)list;
    	current = &(Tlist->header); 
    	for (i = 0; i < pos; i++) 
    	{
    		current = current->next;
    	}
    	
    	return (current->next);
    }
    
    LinkListNode* LinkList_Delete(LinkList* list, int pos)
    {
    	TLinkList *Tlist = NULL;
    	int i = 0;
    	LinkListNode *current = NULL;
    	LinkListNode *ret = NULL;
    	if (list == NULL || pos < 0) //检查这一步总是遗忘
    	{
    		return;
    	}
    	Tlist = (TLinkList *)list;
    	current = &(Tlist->header);
    	for (i = 0; i < pos; i++)
    	{
    		current = current->next;
    	}
    	ret = current->next;
    	current->next = ret->next;
    	Tlist->length--;
    
    	return NULL;
    }
    

      

  • 相关阅读:
    区块链
    git在IDEA中的使用
    hadoop linux 杂记
    idea java web 使用说明
    克隆虚拟机,解决网卡问题
    最小化CentOS6.7(64bit)---安装mysql5.5、jdk、tomcat
    爬虫学习笔记(1)--环境准备与正则表达式
    图论 BZOJ 3669 [Noi2014]魔法森林
    Manacher Ural 1297 Palindrome
    动态规划,贪心 APIO 2015 Sculptures
  • 原文地址:https://www.cnblogs.com/xiaochige/p/7067234.html
Copyright © 2011-2022 走看看