带头结点的单链表的基本操作
2020-04-05 18:18
337 查看
//单链表的结点定义 typedef struct Node { Datatype data; //Datatype为数据类型,可以根据定义为intc,char等 struct Node *next;//node的下一个结点仍是一个结构体(即包含data和*next) }LinkedList; //单链表的初始化 LinkedList LinkedListInit(){ Node *L; L=(Node *)malloc(sizeof(Node)); if(L==NULL){ printf("申请内存空间失败\n"); } L->next=NULL; return L; } //单链表的建立,头插法 LinkedList ListedListGreat(){ Node *L; L=(Node *)malloc(sizeof(NOde());//申请头结点空间 L->next=NULL;//初始化一个空链表 ElemType x; while(scanf("%d",&x)!=EOF){ Node *P//申请新的结点 p=(Node *)malloc(sizeof(Node)); p->data=x;//结点数据域赋值 L->next=p->next;//将结点插到表头 L->next=p; ) return L; } //单链表的插入,在链表的第i个位置插入x元素 LinkedList LinkListInsert(LinkedList L,int i,ElemType x){ Node *pre;//pre是前驱结点 pre=L; int tempi=0; for(int tempi=1;temoi<i;tempi++){ pre=pre->next; } Node *P; p=(Node *)malloc(sizeof(Node)); p->data=x; p->next=pre->next; pre->next=p; return L; } //单链表的删除操作,在链表中删除值为x的元素 LinkedList LinkedListDelete(){LinkedList L,ElemType x){ Node *P,*pre;//pre为前驱结点,p为查的结点 p=L->next; while(p->data!=x){ pre=p; p=p->next; } pre->next=p->next; free(P); return L; }; int main(){ LinkedList list,start; printf("请输入单链表的数据: "); list=LinkedListGreatH(); for(start=list->next;start!=NULL';start=start->next){ printf("%d",start->data); } printf("\n"); int i; ElemType x; printf("请输入插入数据的位置: "); scanf("%d",&i); printf("请输入插入数据的值:"); scanf("%d",&x); LinkedListInsert(list,i,x); for(start=list->next;start!=NULL;start=sstart->next){ printf("%d",start->data); } printf("\n"); return 0; }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 带头结点的单链表的12个基本操作(C++)
- 带头结点的链表基本操作
- 带头结点的单链表的12个基本操作
- 不带头结点的单链表的基本操作
- 带头结点的单链表的八种基本操作
- 昨天写的带头结点的单向链表基本操作更新,主要是中间插入部分以及释放
- C语言实现单链表(带头结点)的基本操作(创建,头插法,尾插法,删除结点,打印链表)
- 带头结点的链表实现线性表的基本操作
- 数据结构-带头结点带环的双向链表基本操作
- 不带头结点的单链表的基本操作
- 《数据结构》进行曲--带头结点的单循环链表的基本操作
- C语言实现双向非循环链表(带头结点尾结点)的基本操作
- bo2-8.cpp 不带头结点的单链表(存储结构由c2-2.h定义)的部分基本操作(9个)
- C语言实现单链表(带头结点)的基本操作(创建,头插法,尾插法,删除结点,打印链表)
- 带头结点的循环链表基本操作
- C语言实现单链表(带头结点)的基本操作
- bo2-9.cpp 不带头结点的单链表(存储结构由c2-2.h定义)的部分基本操作(2个)
- 带头结点的单向链表的基本操作
- 带头结点的单链表的12个基本操作
- 带头结点的单链表的基本操作