正文

(原创)数据结构之单链表2006-05-13 23:08:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/smile/14010.html

分享到:

数据结构之单链表#include <stdio.h>typedef struct node *linklist;struct node { int data; linklist next; //定义一个链域}; int main(){   char n;   linklist head,p;   head = 0; //表结点设为空 printf("请输入一串字符,以回车结束!:\n"); scanf("%c",&n);  while(n!='\n'){  p=(linklist)malloc(sizeof(linklist)); //申请内存空间  p->data=n;    //输入的字符存放在data域里  p->next=head;  //头插法单链表是这样转指针的  head=p; scanf("%c",&n);}printf("你输入的字符串是:\n");p=head; //输出前先让p指回表结点,就象数组回到首地址一样while(p!=NULL) { printf("%c",p->data); p=p->next;} getch(); return 0;} 头插法的单链表,它的输出是倒置数据,这是它的特点哦 尾插法: #include <stdio.h>#include <string.h>typedefstruct node *linklist;struct node {  int data;  linklist next;}; length(linklist head) //求表的长度{  linklist p;  int j = 0;  p = head; while(p->next!=0) //算法思想:当链域next不为空时,说明都存放有数据,则占有空间    { p = p->next; j++;    }return(j);} find_linklist(linklist head,char t) //查找{   linklist p;   p = head; //先要一个数据类型是linklist的变量指向表结点   int j = 0;while((p->next!=0)&&(p->data!=t)) //当没有到表尾及所查找的字符不匹配则继续找  {    p = p->next;    j++;  }  if(p->data==t) return(j);  else return(0);} linklist simplelist(){ linklist head,p,q; char n; head=(linklist)malloc(sizeof(linklist)); p = head; scanf("%c",&n); while(n!='\n')  { q=(linklist)malloc(sizeof(linklist)); q->data = n; p->next = q;  //用工作指针q来实现尾插法 p = q; scanf("%c",&n);  } p->next = NULL; return(head);} int main(){ char n; int a, c, i = 0; linklist head,p; printf("请输入一串字符,按回车结束:\n"); head=simplelist(); a=length(head); p=head; while(p!=NULL) {   printf("%c",p->data);   p = p->next;   i++;}printf("\n");printf("链表的长度是:%d\n",a);printf("请输入你要查找的某个字符:");scanf("%c",&c);a=find_linklist(head,c);if(a!=0)printf("你要查找的字符第一次出现的位置在第%d个位置",a);else printf("没有这个字符!");getch();return 0;}  

阅读(3997) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册