#include <stdio.h> #include <malloc.h> typedef struct node{ //定义节点类型 char data; //数据域 struct node *next; //指针域 }linklist; linklist* Create(){ //创建链表 char key; linklist *phead; //头指针 linklist *pnew; //新节点 linklist *pend; //尾指针 phead = (linklist*)malloc(sizeof(linklist)); pend = phead; puts("请输入你要创建的链表,以$结束"); key=getchar(); while(key!=‘$‘){ pnew = (linklist*)malloc(sizeof(linklist)); pnew ->data = key; pend ->next = pnew; //新节点插入表尾 pend=pnew; //尾指针指向新表尾 key=getchar(); } pend->next = NULL; //将尾节点指向的下一节点设置为空 return phead; //返回头指针 } linklist* Get(linklist* phead,int pos){ //查找第pos个的节点 int cur = 0; //扫描器 linklist *p; p = phead; //指向头节点 while((p->next!=NULL)&&(cur<pos)){ //不合法或到达尾部则退出 p = p->next; cur++; } if(cur==pos){ return p; }else{ return NULL; } } void Print(linklist *phead){ //打印链表 linklist *p = phead->next; while(p!=NULL){ printf("%c",p->data); p=p->next; } puts(""); } int main(void){ linklist* phead = Create(); Print(phead); int pos; puts("请输入你要查找的位置"); scanf("%d",&pos); linklist* pfind = Get(phead,pos); if(pfind !=NULL) printf("%c",pfind->data); else puts("输入错误!"); return 0; }
时间: 2024-10-30 23:50:37