线性表的链式存储结构
来源:互联网 发布:c语言中换行符是 编辑:程序博客网 时间:2024/05/14 17:44
#include <stdio.h>#include <malloc.h>#include <stdlib.h>typedef struct Node{ int val; struct Node * pNext;}Node,* PNode;void init_list(PNode pHead);void show_list(PNode pHead);int is_empty(PNode pHead);void insert_list(PNode pHead,int pos,int val);int get_list_length(PNode pHead);int delete_list(PNode pHead,int pos);void sort_list(PNode pHead);int main(void){ PNode pHead = (PNode)malloc(sizeof(Node));//注意这个地方不能写成PNode pHead; init_list(pHead); printf("%s\n", "初始化之后的结果:"); show_list(pHead); insert_list(pHead,1,11); insert_list(pHead,2,22); insert_list(pHead,3,33); printf("%s\n", "插入之后的结果:"); show_list(pHead); printf("线性表的长度为:%d\n",get_list_length(pHead)); printf("删除的节点为:%d\n",delete_list(pHead,1)); printf("%s\n", "删除之后的结果是:"); show_list(pHead); sort_list(pHead); printf("%s\n", "排序之后的结果是:"); show_list(pHead); return 0;}void init_list(PNode pHead){ PNode pTail = pHead; pTail->pNext=NULL; int len; scanf("%d",&len); int i; for(i=0;i<len;i++){ int val; scanf("%d",&val); PNode pNew = (PNode)malloc(sizeof(Node)); pNew->val=val; pTail->pNext=pNew; pNew->pNext=NULL; pTail=pNew; }}void show_list(PNode pHead){ PNode pNext = pHead->pNext; while(pNext!=NULL){ printf("%d ", pNext->val); pNext=pNext->pNext; } printf("\n");}int is_empty(PNode pHead){ if(NULL==pHead->pNext){ return 1; }else{ return 0; }}void insert_list(PNode pHead,int pos,int val){ int i=1; if(pos<i||pos>get_list_length(pHead)+1){ printf("%s\n", "插入的位置不存在!"); exit(-1); }else if(pHead==NULL){ printf("%s\n", "头指针不能为空!"); exit(-1); } PNode p = pHead; while(p->pNext!=NULL&&i<pos){ p=p->pNext; i++; }//while执行完,这个时候,p位于pos-1个节点上 PNode t = p->pNext; PNode pNew = (PNode)malloc(sizeof(Node)); p->pNext=pNew; pNew->pNext=t; pNew->val=val;}int get_list_length(PNode pHead){ int cnt =0; PNode p = pHead; while(p->pNext!=NULL){ cnt++; p=p->pNext; } return cnt;}int delete_list(PNode pHead,int pos){ int i =1; PNode p = pHead; if(pos<i||pos>get_list_length(pHead)){ printf("%s\n", "要删除的位置不正确!"); exit(-1); } while(p->pNext!=NULL&&i<pos){ p=p->pNext; i++; } PNode temp = p->pNext; p->pNext=temp->pNext; int val = temp->val; free(temp); temp=NULL; return val;}void sort_list(PNode pHead){ int i,j,t; int len = get_list_length(pHead); PNode p,q; for(i=0,p=pHead->pNext;i<len-1;i++,p=p->pNext){ for(j=i+1,q=p->pNext;j<len;j++,q=q->pNext){ if(p->val>q->val){ t = p->val; p->val = q->val; q->val = t; } } }}
0 0
- 线性表的链式存储结构
- 链式存储结构的线性表
- 线性表的链式存储结构
- 【数据结构】线性表的链式存储结构
- 线性表的链式存储结构
- 线性表的链式存储结构
- 线性表的链式存储结构
- 线性表的链式存储结构
- 线性表的链式存储结构
- 【二】线性表的链式存储结构
- 线性表的链式存储结构
- 线性表的链式存储结构(三)
- 【数据结构】-线性表的链式存储结构
- 线性表的链式存储结构
- 线性表的链式存储结构
- 线性表的链式存储结构
- 线性表的链式存储结构
- 线性表的链式存储结构
- 伟大程序员的十大特质
- 前端bootstrap和jquery使用记录
- codeforces 549B B. Looksery Party(构造)
- JS关闭窗口或JS关闭页面的几种代码
- Using Gazebo plugins with ROS
- 线性表的链式存储结构
- 求高精度幂
- 29.根据公式计算值
- objc_setAssociatedObject、objc_getAssociatedObject
- 一些基本属性随笔(不定时更新)
- 聊聊HTTPS和SSL/TLS协议
- 第25题:返回字符串中最长数字字符串的长度
- Basic Calculator
- 标准C++库中的异常类