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 展开收缩table
    摇号系统总结
    【sqlserver】在没有数据库备份的情况下,获得操作记录信息【code】
    【sqlserver】在没有数据库备份的情况下,获得操作记录信息
    html5 canvas 学习
    layer.js 使用
    【网络公开课总结】自动搜索效果
    【网络公开课总结】会飞的小鸟,removeClass() 方法从被选元素移除一个或多个类。
    【问题解决】检索com类工厂中clsid为 10020200-E260-11CF-AE68-00AA004A34D5 的组件时失败
    【svg学习】资料收集
  • 原文地址:https://www.cnblogs.com/xiaochige/p/7067234.html
Copyright © 2011-2022 走看看