C单链表
2016-06-05 21:18
337 查看
#include<stdio.h> #include<malloc.h> typedef struct Student { int age; char name[100]; struct Student* pNext; }Node,*P; P createList() //创表 { int n;//学生数量 int i=1;//计数 P pNew=NULL; P pHead=NULL,pTail=NULL; printf("请输入学生数量"); scanf("%d",&n); for(i;i<=n;i++) { if(pHead==NULL) { pHead=(P)malloc(sizeof(Node)); pTail=pHead; //头指针和尾指针 } printf("请输入第%d个学生姓名和年龄\n",i); scanf("%s %d",&pTail->name,&pTail->age); pNew=(P)malloc(sizeof(Node)); pNew->pNext=NULL; pTail->pNext=pNew; pTail=pNew; } return pHead; } void print(P pHead) //遍历 { P pTemp=pHead; printf("遍历结果"); do{ printf("%s %d\n",pTemp->name,pTemp->age); pTemp=pTemp->pNext; }while(pTemp->pNext!=NULL); } void insert(P pHead,int n) //插表,n表示第几个节点 { int i=1; P pTemp=pHead; P pNew=(P)malloc(sizeof(Node)); printf("输入插入到第%d位置的学生姓名和年龄\n",n); scanf("%s %d",&pNew->name,&pNew->age); for(i;i<=n-2;i++) { pTemp=pTemp->pNext; } pNew->pNext=pTemp->pNext; pTemp->pNext=pNew; printf("插入后遍历\n"); print(pHead); } void deleteNode(P pHead,int n) //删第n个节点 { int i=1; P pTemp=pHead; P pDel; for(i;i<n-1;i++) { pTemp=pTemp->pNext; } pDel=pTemp->pNext; pTemp->pNext=pDel->pNext; free(pDel); printf("删除后遍历\n"); print(pHead); } void main() { P pHead=createList(); print(pHead); //insert(pHead,2); deleteNode(pHead,3); }
相关文章推荐
- [C/C++]反转链表
- C#数据结构之顺序表(SeqList)实例详解
- C#实现基于链表的内存记事本实例
- Lua教程(七):数据结构详解
- C#模拟链表数据结构的实例解析
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构之队列(Quene)实例详解
- C#数据结构揭秘一
- C#数据结构之单链表(LinkList)实例详解
- 数据结构之Treap详解
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- C++利用静态成员或类模板构建链表的方法讲解
- C++实现简单的学生管理系统
- 用C语言举例讲解数据结构中的算法复杂度结与顺序表
- C#数据结构之堆栈(Stack)实例详解
- C#数据结构之双向链表(DbLinkList)实例详解
- JavaScript数据结构和算法之图和图算法
- Linux内核链表实现过程
- C++链表倒序实现方法
- C#通过链表实现队列的方法