博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
链表的学习--创建、添加和删除元素
阅读量:7227 次
发布时间:2019-06-29

本文共 6149 字,大约阅读时间需要 20 分钟。

//list.cpp #include "list.h"#include 
#include
void initList(List *list) { list->first = NULL;}void destroyList(List *list) { Element *e = list->first; Element *next = list->first; list->first = NULL; while (e) { next = e->next; // e->next wird zwischengespeichert e->next = NULL; // und bleibt erreichbar, nachdem e free(e); // freigegeben wurde. e = next; }}void prependToList(List *list, int i) { Element *e = malloc(sizeof(Element)); e->value = i; e->next = list->first; list->first = e;}void printList(List *list) { Element *e; for (e = list->first; e != NULL; e = e->next) { printf("%i ", e->value); } printf("\n");}size_t sizeOfList(List *list) { Element *e; size_t count = 0; // Iterationsbedingung ist wahr, wenn e != NULL for (e = list->first; e; e = e->next) { count++; } return count;}void appendToList(List *list,int i) { Element *e; e = list->first; if(e==NULL){ e=malloc(sizeof(Element)); e->value=i; e->next = NULL; list->first=e; return; } while(e->next != NULL) { e = e->next; } e->next=malloc(sizeof(Element)); e->next->value = i; e->next->next=NULL;}int removeFirst(List *list) { Element *e; int temp; e = list->first; if(e == NULL){ printf("List is NULL!\n"); return 0; } temp=e->value; list->first = list->first->next; free(e); return temp;}int removeLast(List *list) { Element *e; int temp; e = list->first; if(e == NULL){ printf("List is NULL!\n"); return 0; } if(e->next== NULL) { return removeFirst(list); } while(e->next->next != NULL) { e = e->next; } temp=e->next->value; free(e->next); e->next = NULL; return temp;}void insertAfterPosition(List *list, size_t pos, int i) { Element *e,*g; e = list->first; if(e == NULL){ printf("List is NULL!\n"); return; } if(pos>sizeOfList(list))//new add { printf("pos is larger than size of list!\n"); return; } size_t j; for (j=0; j
next; } g=malloc(sizeof(Element)); g->value=i; g->next=e->next; e->next=g;}int removeAfterPosition(List *list,size_t pos){ Element *e,*g; int temp; e = list->first; if(e == NULL){ printf("List is NULL!\n"); return 0; } if(pos>sizeOfList(list))//new add { printf("pos is larger than size of list!\n"); return 0; } size_t j; for (j=0; j
next; } g=e->next; temp=g->value; e->next=e->next->next; free(g); return temp;}void insertSorted(List *list, int i) { Element *e,*g; e = list->first; if(e == NULL){ printf("List is NULL!\n"); return; } if(list->first->next== NULL) { prependToList(list, i); sortList(list); return; } for(e = list->first; e->next != NULL; e = e->next){ if((e->value)>(e->next->value)){ sortList(list); break; } } g=malloc(sizeof(Element)); g->value=i; if(i<=list->first->value)//new add { prependToList(list, i); return; } for(e = list->first; e->next != NULL; e = e->next){ if((e->value<=i)&&(e->next->value>=i)){ g->next=e->next; e->next=g; break; } } if(e->next == NULL)//new add { e->next=g; g->next=NULL; }}void sortList( List *list) { Element *e; int temp; size_t j; size_t size=sizeOfList(list); for (j = size - 1; j > 0; j--) { size_t p = 0; for(e = list->first; e->next != NULL; e = e->next){ p++; if (p > j) break; if((e->value)>(e->next->value)){ temp=e->value; (e->value)=(e->next->value); (e->next->value)=temp; } } }}

 

//list.h #include 
// enthält Definition von size_tstruct Element { int value; struct Element *next;};struct List { struct Element *first;};typedef struct List List;typedef struct Element Element;void initList(List* list);void destroyList(List *list);int removeFirst(List *list);void appendToList(List *list,int i);void printList(List *list);int removeLast(List *list);size_t sizeOfList(List *list);void insertAfterPosition(List *list, size_t pos, int i);void prependToList(List *list, int value);void insertSorted(List *list, int i);void sortList( List *list);int removeAfterPosition(List *list,size_t pos);

 

//prog.cpp #include "list.h"#include 
int main() { struct List list; int appnum,insertpos,removepos,insertnum,insertsortnum; initList(&list); int i = 0; for (i=5; i < 15; ++i) { prependToList(&list, i); } printList(&list); printf("Please input append number:"); scanf("%d",&appnum); printf("Size of list: %zu\n", sizeOfList(&list)); appendToList(&list, appnum); printf("appendToList:\n"); printList(&list); printf("Size of list: %zu\n", sizeOfList(&list)); removeFirst(&list); printf("removeFirst:\n"); printList(&list); printf("Size of list: %zu\n", sizeOfList(&list)); removeLast(&list); printf("removeLast:\n"); printList(&list); printf("Size of list: %zu\n", sizeOfList(&list)); printf("Please input insert position and number:"); scanf("%d %d",&insertpos,&insertnum); insertAfterPosition(&list,insertpos,insertnum); printf("insertAfterPosition %d:\n",insertpos); printList(&list); printf("Please input remove position:"); scanf("%d",&removepos); removeAfterPosition(&list,removepos); printf("removeAfterPosition %d:\n",removepos); printList(&list); printf("Please input insertsorted number:"); scanf("%d",&insertsortnum); printf("Size of list: %zu\n", sizeOfList(&list)); insertSorted(&list,insertsortnum); printf("insertSorted:\n"); printList(&list); printf("Size of list: %zu\n", sizeOfList(&list)); destroyList(&list); printf("Size of list: %zu\n", sizeOfList(&list));}

 

转载于:https://www.cnblogs.com/lishuai0214/p/4309731.html

你可能感兴趣的文章
FastSocket
查看>>
ionic $ionicSlideBoxDelegate 滑动框事件
查看>>
点击文字,把input type="radio"也选中
查看>>
第一章 Java多线程技能
查看>>
Java 集合系列-第八篇-Map架构
查看>>
springmvc 3.2 @MatrixVariable bug 2
查看>>
React-Native PanResponder手势识别器
查看>>
IOS11 光标错位问题
查看>>
如何设计用户登录
查看>>
linux安装mysql5.7.19
查看>>
Zookeeper+ActiveMQ 集群实现
查看>>
加权有向图问题2----多源最短路径问题(Floyd算法)和关键路径算法
查看>>
logback logback.xml常用配置详解(三) <filter>
查看>>
KgMall B2B/B2B2c/C2C版店铺商号初始化
查看>>
Linux内核的ioctl函数学习
查看>>
Liunx Shell入门
查看>>
Thread的中断
查看>>
linux --- 内存管理
查看>>
PostgreSQL
查看>>
CPU 超线程、多核
查看>>