禹城做网站的,做机械的专业外贸网站有哪些,百度销售系统登录,网站上的彩票走势图是怎么做的链表的定义 链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。它可以根据需要开辟内存单元。链表有一个“头指针”变量#xff0c;以head表示#xff0c;它存放一个地址。该地址指向一个元素。链表中每一个元素称为“结点”#xff0c;每个结点都应包括两…链表的定义 链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。它可以根据需要开辟内存单元。链表有一个“头指针”变量以head表示它存放一个地址。该地址指向一个元素。链表中每一个元素称为“结点”每个结点都应包括两个部分一为用户需要用的实际数据二为下一个结点的地址。因此head指向第一个元素第一个元素又指向第二个元素……直到最后一个元素该元素不再指向其它元素它称为“表尾”它的地址部分放一个“NULL”表示“空地址”链表到此结束。 结构体形式
struct test
{int data;struct test *next;
};链表的插入 1头插法
struct Test *insertfromhead(struct Test *head)
{struct Test *new NULL;while(1){new ( struct Test *)malloc(sizeof(struct Test));printf(please input new node(0 qiut)!\n);scanf(%d,new-data);if(new-data 0){printf(quit\n);return head; }else if(head NULL){head new;}else{new-next head;headnew;}}return head;
}(2)尾插法
struct Test *insertfromtail(struct Test *head)
{struct Test *new NULL;struct Test *p head;while(1){new (struct Test *)malloc(sizeof(struct Test));printf(please input new node(0 quit)!\n);scanf(%d,new-data);if(new-data 0){printf(quit\n);return head; }if(p NULL){p new;head p; }else if{while(p-next ! NULL){p p-next; }p-next new;}}return head;}3在指定节点前插
struct Test *insertfrombefore(struct Test *head,int insert_data,struct Test *new)
{struct Test *p head;if(p-data insert_data){new-next head;return new;}//遍历while(p-next ! NULL){if(p-next-data insert_data){new-next p-next;p-nextnew;return head;}p p-next;}printf(no this data %d\n,insert_data);return head;}head链表头节点 insert_data 被前插节点的值 new新节点 4在指定节点后插
struct Test *insertfrombehind(struct Test *head,int insert_data,struct Test *new)
{struct Test *p head;while(p ! NULL){if(p-data insert_data){new-next p-next;p-next new;return head;}p p-next;}printf(no this data %d\n,insert_data);return head;}head链表头节点 insert_data 被后插节点的值 new新节点 链表固定节点的删除
struct test *delelink(struct test*head,int data)
{struct test*phead;if(p-datadata){headhead-next;// free(p);一般只有malloc开辟的空间才能被freereturn head;}while(p-next!NULL){if(p-next-datadata){p-nextp-next-next;return head;}pp-next;}return head;
}data要删除节点的data值
链表的查找
int searchlink(struct test* head,int data){while(head!NULL){if(head-datadata){return 1;}headhead-next;}
}链表节点的计算
int getlinknumbr(struct test* head)
{int cnt0;while(head!NULL){cnt;headhead-next;}return cnt;
}链表的打印
void printLink(struct test *head)
{struct test *point;pointhead;while(point!NULL){printf(%d ,point-data);pointpoint-next;}putchar(\n);
}链表空间的释放
void FreeSpace(struct Text *head){struct Text *p;while(head!NULL){phead-next;free(head);headp;}