设为首页 加入收藏

TOP

数据结构 链表及合并 (一)
2014-11-23 19:48:36 来源: 作者: 【 】 浏览:11
Tags:数据结构 合并

顺序表相比,链表增强了数据间的连接,一个接一个,发现July的博客比较深层次,还是打好基础再了解更深一层的东西。

还是分LinkList.h,LinkList.c,main.c

之前匆匆忙忙赶东西时,就copy一大段改改就交了。自己重写后发现诸多问题在这一块里。

LinkList.h

#include
#include
typedef int DataType;
typedef struct SimpleLinkList *Node;
struct SimpleLinkList{
	DataType info;
	Node link;
} ;
typedef struct SimpleLinkList *LinkList;

LinkList CreateNUllList();
int isNull(LinkList linklist);
int insertPost(LinkList linklist,Node node,DataType element);
int insertBack(LinkList linklist,Node node,DataType element);
int printList(LinkList linklist);
Node searchElement(LinkList linklist,DataType element);
DataType showValue(LinkList linklist,Node node);
int deleteElement(LinkList linklist,DataType element);
LinkList combine(LinkList one,LinkList another);
#include "LinkList.h"
LinkList CreateNUllList(){
	LinkList linklist = (LinkList)malloc(sizeof(struct SimpleLinkList));
	if(linklist != NULL)
		linklist -> link = NULL;
	else 
		printf("create fail!");
	return linklist;
} 


int isNull(LinkList linklist){
	return (linklist != NULL); // not null return 1 
}

int insertPost(LinkList linklist,Node node,DataType element){
	Node temp = (Node)malloc(sizeof(struct SimpleLinkList));
	// 前插  注意如果没有任何元素 那么把头结点指向 element 
	if(temp == NULL){
		printf("insert fail");
		return 0;
	}else{
		for(linklist;linklist!= NULL; linklist = linklist -> link) {
			if(linklist	 -> link == node){
				temp ->info = element;
				linklist ->link = temp;
				temp ->link = node;
			}
		}
	}
	return 1;
	//前插的节点 是要我们自己传参注意 而不是把函数写成 


} 
// insert forward
//带头节点的链表 头结点没有值 
// 其实 所谓的后插   是后插 但是现在的node是 链表  实际插入的时候
//所以  node的link是第一个数  所谓变成“前插” 
int insertBack(LinkList linklist,Node node,DataType element){
	Node temp = (Node)malloc(sizeof(struct SimpleLinkList));
	if(temp == NULL){	
		printf("insert element fail!");
		return 0;
	}
	temp -> info = element; 
	temp -> link = node -> link;
	node -> link = temp;
	
	
	return 1;
} //insert back

int printList(LinkList linklist){
	if(linklist == NULL){
		printf("it is null");
		return 0;
	}
	
	while(linklist -> link != NULL){
		printf("%2d",linklist->link->info);
		linklist  = linklist -> link ;
	}
	printf("\n");
	return 1;
	
}

Node searchElement(LinkList linklist,DataType element){
	Node node;
	if(linklist == NULL){
		printf("the element was not found");
		return NULL;
	} 
	node = linklist -> link; 
	while(node != NULL && node -> info != element){
		node = node -> link; 
	} 
	if(node  == NULL){
		return NULL;
	}
	return node;
		
}
DataType showValue(LinkList linklist,Node node){
    Node temp;
	if(linklist == NULL){
		printf("the element was not found");
		return NULL;
	} 
	temp = linklist -> link; 
	while(temp != NULL && temp -> link != node){
		temp = temp -> link; 
	} 
	return node;
}

int deleteElement(LinkList linklist,DataType element){
    Node node;
    Node temp;
	if(linklist == NULL){
		printf("the element you deleted was not found");
		return 0;
	} 
	node = linklist ; 
	while(node ->link!= NULL && node ->link-> info != element){
		// link 的info   是element之前。 
		node = node -> link; 
	//	printf("test\n");link ->info 先要判断link为不为空! 
	} 
//	printf("test2");
	if(node->link== NULL ){
		printf("the
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇POJ1228(稳定凸包问题) 下一篇hdu1863 畅通工程(最小生成树之pr..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Python爬虫教程(从 (2025-12-26 16:49:14)
·【全269集】B站最详 (2025-12-26 16:49:11)
·Python爬虫详解:原 (2025-12-26 16:49:09)
·Spring Boot Java: (2025-12-26 16:20:19)
·Spring BootでHello (2025-12-26 16:20:15)