您现在的位置是:主页 > news > 吉首公司网站找谁做/福州seo经理招聘

吉首公司网站找谁做/福州seo经理招聘

admin2025/5/10 5:50:42news

简介吉首公司网站找谁做,福州seo经理招聘,通过apache建设网站,wordpress特定用户通用链表就是用一个共同的节点指针来操作不同的结构体数&#xff0c;不同的链表数据结构不同&#xff0c;但是可以共用链表操作函数&#xff0c;通用链表思维图如下&#xff1a; 通用链表操作代码和使用demo如下&#xff1a; main.c #include <stdio.h> #include <st…

吉首公司网站找谁做,福州seo经理招聘,通过apache建设网站,wordpress特定用户通用链表就是用一个共同的节点指针来操作不同的结构体数&#xff0c;不同的链表数据结构不同&#xff0c;但是可以共用链表操作函数&#xff0c;通用链表思维图如下&#xff1a; 通用链表操作代码和使用demo如下&#xff1a; main.c #include <stdio.h> #include <st…

      通用链表就是用一个共同的节点指针来操作不同的结构体数,不同的链表数据结构不同,但是可以共用链表操作函数,通用链表思维图如下:

 

通用链表操作代码和使用demo如下:

main.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "linklist.h"
typedef struct _Teacher
{LinkListNode node;int age;char name[32];char course[32];
}Teacher;
int main(int argc, char argv[])
{int ret = 0,i = 0;LinkList *list = NULL;Teacher t1 = {NULL,31,"zhangsan","Chinese"};Teacher t2 = {NULL,32,"lisi","Math"};Teacher t3 = {NULL,33,"wangwu","English"};list = LinkList_Create();if(list == NULL){return -1;}//向链表中插入函数ret = LinkList_Insert(list,(LinkListNode*)&t1 , LinkList_Length(list));ret = LinkList_Insert(list,(LinkListNode*)&t2 , LinkList_Length(list));ret = LinkList_Insert(list,(LinkListNode*)&t3 , LinkList_Length(list));//遍历链表for(i = 0; i < LinkList_Length(list); i++){Teacher *tmp = (Teacher *)LinkList_Get(list,i);if(tmp == NULL){return -1;}printf("age=%d, name=%s, course=%s\n",tmp->age,tmp->name,tmp->course);}//链表删除while(LinkList_Length(list) > 0){Teacher *tmp = (Teacher *)LinkList_Delete(list,0);if(tmp == NULL){return -1;}}LinkList_Destroy(list);return 0;
}

 

linklist.h

#ifndef _MYLINKLIST_H_
#define _MYLINKLIST_H_typedef void LinkList;
/*
typedef struct _tag_LinkListNode LinkListNode;
struct _tag_LinkListNode
{LinkListNode* next;
};
*/
typedef struct _tag_LinkListNode
{struct _tag_LinkListNode* next;
}LinkListNode;//创建链表
LinkList* LinkList_Create();//销毁链表
void LinkList_Destroy(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);#endif

 

linklist.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "linklist.h"typedef struct _tag_LinkList
{LinkListNode header;int length;
}TLinkList;//创建链表
LinkList* LinkList_Create(void)
{TLinkList *ret = (TLinkList *)malloc(sizeof(TLinkList));if(ret == NULL){return NULL;}memset(ret,0,sizeof(TLinkList));ret->header.next = NULL;ret->length = 0;return ret;
}//销毁链表
void LinkList_Destroy(LinkList* list)
{if(list != NULL){free(list);}return ;
}//清空链表
void LinkList_Clear(LinkList* list)
{TLinkList *tlist = (LinkList *)list;if(tlist == NULL){return;}tlist->header.next = NULL;tlist->length = 0;return ;
}//获取链表长度
int LinkList_Length(LinkList* list){TLinkList *tlist = (LinkList *)list;if(tlist == NULL){return -1;}return tlist->length;
}//向链表的某一个位置插入数据
int LinkList_Insert(LinkList* list, LinkListNode* node, int pos)
{int ret = 0,i = 0;LinkListNode *current = NULL;TLinkList *tlist = NULL;tlist = (LinkList *)list;if(list == NULL || node == NULL || pos < 0){return -1;}current = &(tlist->header);for(i = 0; i < pos; i++){current = current->next;}node->next = current->next;current->next = node;tlist->length++;return 0;
}//从链表的某一位置获取数据
LinkListNode* LinkList_Get(LinkList* list, int pos)
{int i = 0;LinkListNode *current = NULL;TLinkList *tlist = NULL;tlist = (LinkList *)list;if(list == NULL || pos < 0){return NULL;}current = &(tlist->header);for(i = 0; i < pos; i++){current = current->next;}return current->next;
}//从链表的某一位置删除数据
LinkListNode* LinkList_Delete(LinkList* list,int pos)
{int i = 0;LinkListNode *current = NULL;LinkListNode *ret = NULL;TLinkList *tlist = NULL;tlist = (LinkList *)list;if(list == NULL || pos < 0){return NULL;}current = &(tlist->header);for(i = 0; i < pos; i++){current = current->next;}ret = current->next;current->next = ret->next;tlist->length--;return ret;
}