0
点赞
收藏
分享

微信扫一扫

数据结构初学

鱼满舱 2022-01-20 阅读 68

用c写的单链表

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct Node{
	int data;
	struct Node * pNext;	
}NODE,*PNODE;

//函数声明 
PNODE create_list(void);
void traverse_list(PNODE pHead);
bool is_empty(PNODE pHead);
int length_list(PNODE pHead);
void sort_list(PNODE pHead);
int main(void){
	PNODE pHead = NULL;
	pHead = create_list();
	traverse_list(pHead);
	if(is_empty(pHead)){
		printf("链表为空!\n");
	}
	printf("链表长度为 %d\n",length_list(pHead)) ;
	sort_list(pHead);
	traverse_list(pHead);
	return 0;
}
PNODE create_list(void){
	int len;//用来存放有效节点的个数 
	int i;
	int val;//用来存放用户输入的结点的值
	PNODE pHead = (PNODE)malloc(sizeof(NODE));
	if(NULL==pHead){
		printf("分配失败,程序终止!\n");
		exit(-1);
	}
	PNODE pTail = pHead;
	pTail->pNext = NULL;
	printf("请输入您需要生成的链表节点的个数:len=");
	scanf("%d", &len);
	for(i=0;i<len;i++){
		PNODE p = (PNODE)malloc(sizeof(NODE));
		if(NULL==p){
		printf("分配失败,程序终止!\n");
		exit(-1);
	}
		printf("请输入第%d节点的值: " ,i+1);
		scanf("%d", &p->data);
		pTail->pNext = p;
		p->pNext = NULL;
		pTail = p; 
	} 
	return pHead;
}
void traverse_list(PNODE pHead){
		PNODE p = pHead->pNext;
		while(NULL!=p){
			printf("%d " ,p->data);
			p=p->pNext;
		}
		printf("\n");
		return ;
	}
bool is_empty(PNODE pHead){
	if(NULL==pHead->pNext){
		return true;
	}else{
		return false;
	}
}	 
int length_list(PNODE pHead){
	int a=0;
	PNODE p = pHead->pNext;
	while(NULL!=p){
		a++;
		p=p->pNext;
	}
	return a;
}
void sort_list(PNODE pHead){
	int i,k;
	PNODE p = pHead->pNext,q;
	int len = length_list(pHead);
	for(i=0;i<len-1;i++,p=p->pNext){
		for(k=i+1,q=p->pNext;k<len;k++,q=q->pNext){
			if(p->data>q->data){
				int a = p->data;
				p->data = q->data;
				q->data = a;
			}
		}
	}
}
举报

相关推荐

0 条评论