链表综合操作C版实现程序
决定找时间把数据结构复习下,从链表开始吧。这一知识点虽说并不涉及复杂的算法,不需要费尽头脑去思考来龙去脉,但是要写出完整的程序来,还是要花一些时间的。特别是如果对指针操作不够熟练,极易出错。好久没用C写程序了……
完整代码:
/*
* 单链表基本操作C版实现程序
* 包括插入、删除、查找。
*
* author: wensefu
* date: 10-5-4
*/
#include<stdio.h>
#include<stdlib.h>
/*单链表数据结构定义*/
typedef struct Node
{
int e; //这里简单点,以整型为结点数据域
struct Node * next;
}LNode,*LinkList;
/*相关函数声明*/
bool ListInit(LinkList); //初始化链表
bool ListInsert(int,int,LinkList); //插入 (注:C中没有bool类型)
bool ListDelete(int,LinkList); //删除指定位置结点
int GetElem(LinkList,int); //返回指定位置结点数据域的值
int GetLength(LinkList); //获取链表长度
void print(LinkList); //print
LinkList CreateList(); //建立一个空链表
int main()
{
printf("--------------------------------链表综合操作------------------------------\n\n");
/****先初始化*******/
LinkList l=CreateList();
if(ListInit(l))
{
printf("The linklist now is:>");
print(l);
}
/******执行操作**********/
bool flag=true;
int e,pos;
while(true)
{
if(flag==false)
{
break;
}
printf("请选择操作: 1.插入 2.删除 3.查找 4.退出>");
int choice;
while(true)
{
scanf("%d",&choice);
if(choice<1||choice>4)
{
printf("Input error,try again:>");
}
else
{
break;
}
}
switch(choice)
{
case 1:
printf("input elem and pos>");
scanf("%d%d",&e,&pos);
if(ListInsert(e,pos,l))
{
printf("Insert successful,now the linklist is: ");
print(l);
}
else
{
printf("Insert failed\n");
}
break;
case 2:
printf("input pos to delete>");
scanf("%d",&
相关文档:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<windows.h>
#include<malloc.h>
#include<math.h>
typedef struct worker
{
int num; //编号
char name[15]; //姓名
char zhicheng[15];& ......
格式输出:
printf(格式控制, 输出表列);
%d 十进制数 %md m为指定的宽度 若数据位数小于m,则左端补以空格;若大于m,则按实际位数输出
%ld 长整型数据 %mld 指定字段宽度
%o 八进制整数形式 %mo
%x 十六进制整数形式 %mx
%u unsigned型数据,它也可用%o或%x格式输出
%c 一个字符 ......
在C与C++语言中都存在关键字const,很多人都对此关键字存在一个错误的认识,认为在C语言中关键字const是使变量作为一个常量,即将变量常量化,就像宏定义一样。而在C语言中的关键字const所起的作用并不是使变量常量话,而是限制变量,使变量除了被赋初值外,无法被重新赋值。
而在C++中关键字const不仅使 ......