单链表概述
单链表是一种数据存储机构,结构由数据和指向下一个数据的指针组成。结构体代码如下:
typedef struct LNode { DataType data; struct LNode *next; } LNode, *LinkList;
单链表的特点
单链表的特性具有插入,删除快,查找慢的特点。
创建连表
LinkList CreateListHead(); void Insert(LinkList l, int position ); void Remove(LinkList l,int position ); void PrintList(LinkList l); void putChar(char c){printf("%c",c);} int getLength(LinkList l){ int len=0; LinkList pNow ; pNow=l; while(pNow->next!=NULL){len++; pNow=pNow->next;} return len; }
删除代码
//delete data from list void Remove (LinkList l,int position ){ LinkList pNow=l; for(int i =0;i<position -1;i++){ pNow=pNow->next; } pNow->next=pNow->next->next; }
void insert(LinkList l,char c,int position ){ if(position <0||position >getLength(l)) puts("illegal parameter"); else { LinkList pNow =l; for(int i =0; i< position-1 ; i++){ pNow=pNow->next; } LinkList temp=(LinkList ) (malloc (sizeof(LNode))); temp->data=c; temp->next=pNow->next; pNow->next=temp; } }
int getLength(LinkList l){ int len=0; LinkList pNow ; pNow=l; while(pNow->next!=NULL){len++; pNow=pNow->next;} return len; }
void PrintList(LinkList L) {LinkList pNow =(LinkList )(malloc (sizeof(LNode))); pNow =L; while(pNow->next!=NULL){ putChar(pNow->next->data); pNow=pNow->next;} puts(""); }
#include <stdio.h> #include <stdlib.h> #include <conio.h> //指定使用的结构体 typedef char DataType; typedef struct LNode { DataType data; struct LNode *next; } LNode, *LinkList; LinkList CreateListHead(); void Insert(LinkList l, int position ); void Remove(LinkList l,int position ); void PrintList(LinkList l); void putChar(char c){printf("%c",c);} int getLength(LinkList l){ int len=0; LinkList pNow ; pNow=l; while(pNow->next!=NULL){len++; pNow=pNow->next;} return len; } //create a list LinkList CreateListHead()//头插法创建单链表 { LinkList L=(LinkList)malloc(sizeof(LNode)); LinkList p; L->next=NULL; LinkList pNow =(LinkList )(malloc(sizeof(LNode))); //带头结点 pNow =L; char ch; while((ch=getchar())!=‘\n‘) { p=(LinkList)malloc(sizeof(LNode)); p->data=ch; pNow->next=p; pNow=pNow ->next; pNow->next=NULL; } return L; } //输出函数: void PrintList(LinkList L) {LinkList pNow =(LinkList )(malloc (sizeof(LNode))); pNow =L; while(pNow->next!=NULL){ putChar(pNow->next->data); pNow=pNow->next;} puts(""); } //insert data into list void insert(LinkList l,char c,int position ){ if(position <0||position >getLength(l)) puts("illegal parameter"); else { LinkList pNow =l; for(int i =0; i< position-1 ; i++){ pNow=pNow->next; } LinkList temp=(LinkList ) (malloc (sizeof(LNode))); temp->data=c; temp->next=pNow->next; pNow->next=temp; } } //delete data from list void Remove (LinkList l,int position ){ LinkList pNow=l; for(int i =0;i<position -1;i++){ pNow=pNow->next; } pNow->next=pNow->next->next; } char input(){ char c=getche() ;puts(""); return c; } void main(){ puts("input some characters ,end with enter, for initial link list ,each character will stored in linklist "); LinkList l=CreateListHead(); puts("all of the data store in linklist,you have already create, is show in below:"); PrintList(l); puts("link list is already initialed ,choose a operation by input a number "); puts("1 for insert \n2 for delete\n3 for show data\n4 for exit!"); char c ; bool flag=true; while( flag ){ c=input(); switch(c) {int position ; char a; case ‘1‘:puts("input character and position seperated by ,");scanf("%c,%d",&c,&position);insert(l,c,position);break; case ‘2‘:puts("input positon of data ,you want to delete ");scanf( "%d",&position );Remove(l,position);break; case ‘3‘:PrintList(l);break; case ‘4‘:flag=false ;break; } puts("1 for insert \n2 for delete\n3 for show data\n4 for exit!"); } }
原文:https://www.cnblogs.com/dreamofchenxinbao/p/10806060.html