ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数据结构之C语言版单链表操作

2021-09-30 01:32:11  阅读:132  来源: 互联网

标签:单链 int data list C语言 PNODE pHead 数据结构 next


# include <stdio.h>
# include <malloc.h>

typedef struct Node{
	int data;
	struct Node * next;
} Node ,* PNODE;

PNODE create_list();
void show_list(PNODE);
int size_list(PNODE);
void sort_list(PNODE);
bool insert_list(PNODE,int,int);
int delete_list(PNODE,int,int *);
int main(void){
	PNODE pHead = create_list();
	show_list(pHead);
	int size = size_list(pHead);
	printf("\n");
	printf("链表对应的长度是:%d\n",size);
	// 然后来进行排序
	sort_list(pHead);
	show_list(pHead); 
	printf("\n");
	insert_list( pHead,5,555);
	show_list(pHead); 
	printf("------------------\n");
	int i=-1;
	delete_list(pHead,3,&i);
	show_list(pHead); 
	printf("对应的值是:%d\n",i);
	return 0;
}

PNODE create_list(){
	PNODE pHead = (PNODE)malloc(sizeof(Node));
	PNODE tmp = pHead;
	printf("请输入链表的长度的:\n");
	int len;
	scanf("%d",&len);
	int i,val;
	for(i=0;i<len;i++){
		printf("请输入第%d个元素的值:\n",i+1);
		scanf("%d",&val);
		PNODE pNew = (PNODE)malloc(sizeof(Node));
		pNew->data=val;
		pNew->next=NULL;
		tmp->next=pNew;
		tmp=pNew;
	}
	return pHead;
}

void show_list(PNODE pHead){
	PNODE p = pHead->next;
	while(NULL!=p){
		printf("%d  ",p->data);
		p = p->next;
	}
}

int size_list(PNODE pHead){
	int i = 0;
	PNODE p = pHead->next;
	while(NULL!=p){
		i++;
		p = p->next;
	}
	return i;
}

void sort_list(PNODE pHead){
	int i,j,k;
	int size = size_list(pHead);
	PNODE p,q;
	for(i=0,p=pHead->next;i<size-1;i++,p=p->next){
		for(j=i+1,q=p->next;j<size;j++,q=q->next){
			if(p->data>=q->data){
				k=	p->data;
				p->data=q->data;
				q->data=k;
			}
		}
	}
}

bool insert_list(PNODE pHead,int pos,int val){
	PNODE p = pHead;
	int i = 0;
	while(NULL!=p&&i<pos-1){
		p=p->next;
		i++;
	}
	if(i>pos-1||p==NULL){
		return false;
	}
	PNODE t = (PNODE)malloc(sizeof(Node));
	t->data=val;
	t->next=p->next;
	p->next=t;
	return true;
}


int  delete_list(PNODE pHead,int pos,int * val){
	PNODE p = pHead;
	int i = 0;
	while(NULL!=p&&i<pos-1){
		p=p->next;
		i++;
	}
	if(i>pos-1||p==NULL){
		return false;
	}
	PNODE tmp = p->next;
	*val = tmp->data;
	p->next = tmp->next;
	free(tmp);
	return *val;
}

标签:单链,int,data,list,C语言,PNODE,pHead,数据结构,next
来源: https://www.cnblogs.com/likeguang/p/15355083.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有