c数据结构之单链表操作
来源:互联网 发布:淘宝排名下降怎么补救 编辑:程序博客网 时间:2024/06/05 06:19
#include<stdio.h>
#include<stdlib.h>
typedef struct Node{
int data;
struct Node *next;
}Linklist;
void createLink(Linklist *h){
Linklist *p1, *p;
p1 = p = h;
int linkLength;
printf("请输入链表的长度: ");
scanf("%d", &linkLength);
int i;
for(i = 0;i < linkLength; i ++){
printf("请输入链表的第%d结点的值: ", i + 1);
scanf("%d", &p->data);
//p->data = 2 + i;
p = (Linklist *)malloc(sizeof(Linklist));
p1->next = p;
p1 = p;
}
p1->next = NULL;
}
void insertNodeByIndex(Linklist * list){
int index;
printf("请输入要插入的位置下标: ");
scanf("%d", &index);
int i ;
for(i = 0; i < index - 2; i ++){
list = list->next;
}
Linklist *p;
p = (Linklist *)malloc(sizeof(Linklist));
printf("请输入要插入的值: ");
scanf("%d", &p->data);
p->next = list->next;
list->next = p;
}
void deleteNodeByIndex(Linklist * list){
int index;
printf("请输入要删除的位置下标: ");
scanf("%d", &index);
int i;
for(i = 0; i < index - 2; i ++ ){
list = list->next;
}
list->next = list->next->next;
}
void printLink(Linklist *list){
while(list->next != NULL){
printf("%d\t", list->data);
list = list->next;
}
printf("\n");
}
void sortLink(Linklist *list){
int count = getLinkLength(list);
if(count == 0){
printf("没有结点");
}else if(count == 2){
if(list->data > list->next->data){
list->next->next = list;
list->next = NULL;
}
}else if(count > 2){
int i;
for(i = 0; i < count - 1; i ++){
if(list->data > list->next->data){//如果前面大于后面
list->next = list->next->next;
list->next = list;
}
}
}
}
int getLinkLength(Linklist *list){
int count = 0;
while(list->next != NULL){
count ++;
list = list->next;
}
printf("链表的长度为: %d \n",count);
return count;
}
int main(){
Linklist *list;
list = (Linklist *)malloc(sizeof(Linklist));
int index;
while(index != 0){
printf("\n 1 建立链表 \n 2 插入结点 \n 3 删除结点 \n 4 排序链表 \n 5 打印链表\n 6 打印长度 \n 请输入选项: ");
scanf("%d", &index);
switch(index){
case 1 : createLink(list); break;
case 2 : insertNodeByIndex(list); break;
case 3 : deleteNodeByIndex(list); break;
case 4 : sortLink(list); break;
case 5 : printLink(list); break;
case 6 : getLinkLength(list); break;
}
}
system("pause");
return 0;
}
#include<stdlib.h>
typedef struct Node{
int data;
struct Node *next;
}Linklist;
void createLink(Linklist *h){
Linklist *p1, *p;
p1 = p = h;
int linkLength;
printf("请输入链表的长度: ");
scanf("%d", &linkLength);
int i;
for(i = 0;i < linkLength; i ++){
printf("请输入链表的第%d结点的值: ", i + 1);
scanf("%d", &p->data);
//p->data = 2 + i;
p = (Linklist *)malloc(sizeof(Linklist));
p1->next = p;
p1 = p;
}
p1->next = NULL;
}
void insertNodeByIndex(Linklist * list){
int index;
printf("请输入要插入的位置下标: ");
scanf("%d", &index);
int i ;
for(i = 0; i < index - 2; i ++){
list = list->next;
}
Linklist *p;
p = (Linklist *)malloc(sizeof(Linklist));
printf("请输入要插入的值: ");
scanf("%d", &p->data);
p->next = list->next;
list->next = p;
}
void deleteNodeByIndex(Linklist * list){
int index;
printf("请输入要删除的位置下标: ");
scanf("%d", &index);
int i;
for(i = 0; i < index - 2; i ++ ){
list = list->next;
}
list->next = list->next->next;
}
void printLink(Linklist *list){
while(list->next != NULL){
printf("%d\t", list->data);
list = list->next;
}
printf("\n");
}
void sortLink(Linklist *list){
int count = getLinkLength(list);
if(count == 0){
printf("没有结点");
}else if(count == 2){
if(list->data > list->next->data){
list->next->next = list;
list->next = NULL;
}
}else if(count > 2){
int i;
for(i = 0; i < count - 1; i ++){
if(list->data > list->next->data){//如果前面大于后面
list->next = list->next->next;
list->next = list;
}
}
}
}
int getLinkLength(Linklist *list){
int count = 0;
while(list->next != NULL){
count ++;
list = list->next;
}
printf("链表的长度为: %d \n",count);
return count;
}
int main(){
Linklist *list;
list = (Linklist *)malloc(sizeof(Linklist));
int index;
while(index != 0){
printf("\n 1 建立链表 \n 2 插入结点 \n 3 删除结点 \n 4 排序链表 \n 5 打印链表\n 6 打印长度 \n 请输入选项: ");
scanf("%d", &index);
switch(index){
case 1 : createLink(list); break;
case 2 : insertNodeByIndex(list); break;
case 3 : deleteNodeByIndex(list); break;
case 4 : sortLink(list); break;
case 5 : printLink(list); break;
case 6 : getLinkLength(list); break;
}
}
system("pause");
return 0;
}
- c数据结构之单链表操作
- 数据结构之单链表常见操作 C
- C数据结构 单链表操作
- 数据结构之单链表操作
- 数据结构之单链表操作
- 数据结构之---c语言实现循环单链表操作
- C数据结构之单链表
- [C++]数据结构之单链表
- 数据结构C语言版之二叉树操作
- c语言数据结构--单链表操作
- 数据结构之单链表基本操作
- 数据结构之单链表操作二
- 数据结构之单链表基本操作
- 数据结构之单链表(C++)
- c语言数据结构之单链表
- linux C 数据结构之单链表
- 数据结构 - C语言版 - 单链表 所有基本操作
- 【C++/数据结构】单链表的基本操作
- 三步堵死SQL注入漏洞
- stm32 EXTI对应的中断函数
- Django自定义过滤器
- java调用“package存储过程”遇到的问题ORA-04068: existing state of packages has been discarded
- SQL注入实战---利用“dbo”获得SQL管理权限和系统权限
- c数据结构之单链表操作
- js头像预览
- Linux里如何查找文件内容
- C sharp中如何调用C++编写的DLL
- pinyin4j的使用例子:将中文转换成拼音
- linux下使用3G拨号上网
- SQL注入渗透某网络安全公司的网站全过程
- JsonHelper Json转xml,Json转DataSet,DataSet转Json
- flex 使用SuperTabNavigator设置选项卡字体大小