单链表的初始化,插入删除等操作
2013-07-27 19:31
453 查看
#include<stdio.h> #include<malloc.h> #include<stdlib.h> #define error -1 typedef struct node { char data[10]; struct node *next; }node,*LinkList; node *ListCreate(int n)//建立单链表,该单链表有头结点 { //node *p,*h,*s; LinkList p,h,s; h = (LinkList)malloc(sizeof(node)); h->next = NULL; p = h; for(int i=0;i<n;i++) { s = (LinkList)malloc(sizeof(node)); scanf("%s",s->data); //s->data = "lv"; p->next = s; s->next = NULL; p = s; } return h; } int DispList(LinkList h)//输出单链表 { LinkList p = h->next; while(p != NULL) { printf("\n%s ",p->data); p = p->next; } getchar(); return 1; } int length(LinkList &h)//单链表的测长,h前为什么加不加&都可以,可能是引用的问题???? { int n=0; LinkList p = h; while(p->next!=NULL) { p = p->next; n++; } return n; } int ListDelete(LinkList &h,int i)//删除单链表中的某个结点 { LinkList p = h,q; int j=0; while(p->next!=NULL && j<i-1 ) { p = p->next; j++; } if((p->next)==NULL || j>i-1) return error; q = p->next; p->next = q->next; free(q); return 1; } int ListInsert(LinkList &h,int i)//在带头结点的单链表L中第i个位置之前插入元素 { LinkList p=h,s,q; int j=0; while(p && j<i-1) { p = p->next; j++; } if(!p || j>i-1) return error;//i小于1或大于表长加1 s = (LinkList)malloc(sizeof(node)); printf("\n插入的元素"); scanf("%s",s->data); s->next = p->next; p->next = s; return 1; } int main() { int num=4; int len; //node *head; LinkList head; head = ListCreate(num);//建立单链表 printf("\n建立的单链表:"); DispList(head);//单链表打印 len = length(head);//单链表测长 printf("\n单链表的长度:"); printf("\n%d",len); ListDelete(head,2); printf("\n删除某一结点后的单链表:"); DispList(head); ListInsert(head,4); printf("\n插入某一结点后的单链表:"); DispList(head); getchar(); return 0; }
相关文章推荐
- (一)顺序表和单链表的初始化、插入、删除等操作
- 循环链表 实现对循环链表的初始化,创建,插入,删除,输出操作
- 用C语言编写一个包含链表的初始化、插入、删除、查找等基本操作的程序。
- (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作
- (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作
- 数据结构:链表创建、显示、求和、插入、删除等操作的代码实现
- java语言编写链表的基本操作(链表的创建,插入,删除,打印,排序)
- 链表的基础操作总结(链表创建,插入,删除,遍历等等)
- C_线性表----单链表的基本操作(构表、插入、删除、倒序、输出)
- 循环链表的初始化、插入、删除、返回结点位置、遍历
- 不带头结点的单链表的插入,删除,原地转置,判断空,清空,统计节点数目等操作
- 链表的创建、插入、删除操作
- 单链表的初始化,建立,插入,查找,删除
- 链表的简单操作(建立,输出,插入,删除)
- 双链表的实现以及插入删除等操作
- 链表插入删除操作
- (C语言版)链表(四)——实现双向循环链表创建、插入、删除、释放内存等简单操作
- (C语言版)链表(四)——实现双向循环链表创建、插入、删除、释放内存等简单操作
- 单链表 建立, 查找, 删除, 插入 操作
- 链表的操作增加、插入、删除、查找、计算表长