- 首页 > it技术 > >
Data|单链表的增删查改
dataalgorithmANDstructure
#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;
}
推荐阅读