Data|单链表的增删查改

#include #includetypedef struct Node{ char ch; struct Node * next; }Node,*Linklist; int num; //查找给定值的结点,返回结点指针 Node * findValue(char c,Node * head){ Node * p=head->next; while(p->next!=NULL){ if(p->ch==c) return p; else p=p->next; } return head; }//查找给定位置的结点的值 char findIndex_Value(Node * head,int index){ int count=0; Node * p=head->next; for(int i=1; inext; } return p->ch; }//在给定位置插入一个结点 void insertP(Node *head,int index){ if(index<0||index>4+1){ printf("插入操作非法\n"); }else{ Node *p=head; index--; while(p->next!=NULL&&index!=0){ p=p->next; index--; } Node *s=(Node *)malloc(sizeof(Node)); s->ch='j'; s->next=p->next; p->next=s; } }//修改给定位置的结点值 void setP(Node *head,int index){ if(index<0||index>4+1){ printf("操作非法\n"); }else{ Node *p=head; index--; while(p->next!=NULL&&index!=0){ p=p->next; index--; } p->next->ch='g'; } }//删除给定位置的结点 void deleteP(Node *head,int index){ if(index<0||index>4){ printf("操作非法\n"); }else{ Node *p=head; index--; while(p->next!=NULL&&index!=0) { p=p->next; index--; } Node *s=p->next; p->next=s->next; s->next=NULL; free(s); } }//建立一个单链表 Node * createLinkList(int num){ char c; Linklist L=(Linklist)(malloc)(sizeof(Linklist)); L->ch=NULL; L->next=NULL; Node * r=L; Node *s; for(int i=0; ich='a'; break; case 1:s->ch='b'; break; case 2:s->ch='c'; break; case 3:s->ch='d'; break; } //s->ch='a'; r->next=s; r=s; } } r->next=NULL; return L; }//输出单链表 void procOutput(Node * L){ Node * p=L->next; while(p->next!=NULL){ printf("%c ",p->ch); p=p->next; } printf("\n"); }int main(){ Linklist L=createLinkList(5); Node * p1=findValue('c',L); printf("%c\n",p1->ch); char cha=findIndex_Value(L,3); printf("%c\n",cha); deleteP(L,3); procOutput(L); insertP(L,3); procOutput(L); setP(L,3); procOutput(L); return 0; }

    推荐阅读