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;
    }
    

      

  • 相关阅读:
    jQuery---val方法
    jQuery---内容复习
    jQuery---弹幕效果
    执行插件超过2分钟超时错误,如何办?
    Dynamics 365设置错误通知首选项的方法
    Dynamics 365创建用户提示:您正在尝试使用已由其他用户使用的域登录来创建用户。的解决办法
    导入解决方案错误及其解决办法
    Microsoft Dynamics CRM 2015 and Microsoft Dynamics CRM 2016 Performance and Scalability Documentation
    Dynamics 365测试和启用邮箱时候一直显示“安排电子邮件配置测试”怎么办?
    控制台程序读取Excel设置角色权限
  • 原文地址:https://www.cnblogs.com/xiaochige/p/7067234.html
Copyright © 2011-2022 走看看