单链表的基本操作
来源:互联网 发布:钓鱼源码 编辑:程序博客网 时间:2024/06/06 03:52
#include <stdio.h>#include <stdlib.h>struct Linklist{ char data; struct Linklist * next;};Linklist * createLinklist(){ Linklist * head,* p; char x; head = (Linklist *)malloc(sizeof(Linklist)); head->next = NULL; printf("please input data!\n"); scanf("%c",&x); while(x != '\n'){ p = (Linklist *)malloc(sizeof(Linklist)); p->data = x; p->next = head->next; head->next = p; scanf("%c",&x); } return head;}/*Linklist * createLinklist(){ Linklist * head,* p,*q; char x; head = (Linklist *)malloc(sizeof(Linklist)); head->next = NULL; q = head; printf("please input data!\n"); scanf("%c",&x); while(x != '\n'){ p = (Linklist *)malloc(sizeof(Linklist)); p->data = x; p->next = NULL; q->next = p; q = p; scanf("%c",&x); } return head;}*/Linklist * location(Linklist * head,int i){ Linklist * p; int j = 0; p = head; while(p!= NULL && j<i){ p = p->next; j++; } return p;}Linklist * location2(Linklist * head,char x){ Linklist * p; p = head->next; while(p->data != x){ p = p->next; } return p;}void insert(Linklist * head,int i,char x){ Linklist * p; Linklist * q; p = location(head,i-1); if(p == NULL){ printf("the location of i-1 doesn't exist1\n"); }else{ q = (Linklist *)malloc(sizeof(Linklist)); q->data = x; q->next = p->next; p->next = q; }}void delLinklist(Linklist * head,int i){ Linklist * p; Linklist * q; p = location(head,i-1); if(p == NULL){ printf("the location i-1 doesn't exist!\n"); }else if(p->next == NULL){ printf("the location i doesn't exist!\n"); }else{ q = p->next; p->next = q->next; free(q); }}int lengthLinklist(Linklist * head){ int i=0; Linklist * p = head; while(p!=NULL){ i++; p = p->next; } return i-1;}void reverse(Linklist * head){ Linklist * p,*q; p = head->next; head->next = NULL; while(p!=NULL){ q = p; p = p->next; q->next = head->next; head->next = q; }}void traverse(Linklist * head){ Linklist * p; p = head->next; printf("the elements of the list are:\n"); while(p!=NULL){ printf("%c",p->data); p = p->next; }}int main(){ Linklist * head; Linklist * p;// Linklist * q; int x; int len;// char y; head = createLinklist(); traverse(head); printf("\n"); printf("the length of the list is:\n"); len = lengthLinklist(head); printf("%d",len); printf("\n"); printf("please input the location\n"); scanf("%d",&x); p = location(head,x); if(p != NULL){ printf("%c",p->data); }else{ printf("the position doesn't exist!\n"); } /* printf("please input the value\n"); scanf("%c",&y); q = location2(head,y); if(q != NULL){ printf("the value exist!\n"); }else{ printf("the value doesn't exist!\n"); } */ printf("\nafter insert:\n"); insert(head,4,'h'); traverse(head); printf("\n\n"); printf("after delete:\n"); delLinklist(head,3); traverse(head); printf("\n\n"); printf("after reverse:\n"); reverse(head); traverse(head); printf("\n"); return 0;}
0 0
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作!
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- html的表单form
- JavaScript作用域问题详述
- 三整数排序
- Android 引导页的实现
- 第5周-项目3-时间类(1)
- 单链表的基本操作
- 三角形2
- bzoj4402: Claris的剑
- notes on virtio-blk driver
- 优先队列的一些使用
- 最短路径问题 HDU 3790 双权最短路
- HDU 5651xiaoxin juju needs help 带模除法逆元+有重复元素的全排列值
- hdu4031 Atack(树状数组区间更新单点求值)
- 在企业内部分发 iOS 应用程序